解决Ubuntu12.04在vmware9下无法进入Unity&Mode的问题
主机信息:操作系统Windows 7 x64,vmware 9,运行Ubuntu 12.04。
问题:切换到Unity Mode,得到以下信息:
The virtual machine cannot enter Unity mode because:
- Unity is not supported on the guest operating system.
解决办法:***Gnome
sudo add-apt-repository ppa:gnome3-team/gnome3
sudo apt-get update
sudo apt-get install gnome-shell
完成后,注销,选择 Gnome Classic - No Effects桌面
ALT="解决Ubuntu12.04在vmware9下无法进入Unity&Mode的问题"
TITLE="解决Ubuntu12.04在vmware9下无法进入Unity&Mode的问题" />还是unity
mode用着high一些。
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。【unity 单例模式深入探讨 什么是unity模式 unity 例模式 unity模式是什么意思 无法进入unity模式 unity模式】-教程分享-【游戏蛮牛】-虚拟现实,unity3d,unity3d教程下载首选u3d,unity3d官网_unity3d U3D教程官网 ios开发 Android开发 游戏开发平台-游戏蛮牛
unity 单例模式深入探讨
本帖最后由 uk666 于
23:18 编辑
单例模式(singleton pattern)大家都不陌生,我今天主要是和大家探讨一下单例模式在unity中的实现,比起一般的单例,unity中有些他的特点。
最普通的单例:(样式一)
public class Singleton
& & static S
& & public static Singleton Instance {
& && &get {
& && && && &if (instance == null) {
& && && && && & instance = new Singleton ();
& && && && &}
& && && && &
unity单例模式二:
但是unity的所有脚本都必须挂在一个gameobject上,否则无法执行,你这个单例中若只是一些数据,那倒没关系,但我相信绝大多数单例模式都不会只包含数据,若只要实现包含数据的功能,用全局静态变量就行了,说到这里加一句,有些盆友喜欢用单例脚本当做全局脚本来用,那其实是违背单例模式的初衷的...
好,我们来实现以下挂到gameobject的单例(模式二):
public class UnitySingleton : MonoBehaviour
static UnityS
public static UnitySingleton Instance {
& &if (instance == null) {
& &instance = FindObjectOfType (typeof(UnitySingleton)) as UnityS
& &if (instance == null) {
& &GameObject obj = new GameObject ();
& &instance = obj.AddComponent (typeof(UnitySingleton));
unity单例模式三:
那如果我的游戏里有很多单例脚本,每个脚本都这么写岂不是很麻烦?岂不是很违背oo思想?^_^,那我们来设计一个泛型类:
public class UnitySingleton&T& : MonoBehaviour
& & where T : Component
& & private static T _
& & public static T Instance {
& && &get {
& && && && &if (_instance == null) {
& && && && && & instance = FindObjectOfType (typeof(T)) as T;
& && && && && & if (_instance == null) {
& && && && && && &GameObject obj = new GameObject ();
& && && && && && &obj.hideFlags = HideFlags.HideAndDontS//隐藏实例化的new game object,下同
& && && && && && &_instance = obj.AddComponent (typeof(T));
& && && && && & }
& && && && &}
& && && && &return _
这样一来,场景中需要单例化的脚本只要简单的继承这个类就可以了
public class Manager : UnitySingleton&Manager&
public string testText = &hello Sinngleton!&;
manager单例脚本将在第一次实例化时自动创建,当然,你是看不到他的呵呵,但是底部的debuglog出卖了他...:
public class SingletonTest : MonoBehaviour {
& && &// Use this for initialization
& && &void Start () {
& && && && && & Debug.Log(Manager.Instance.testText);
unity单例模式四:
最后一个问题就是,我希望我的所有单例脚本在场景变化后依然存在,那自然是用DontDestroyOnLoad,直接上脚本:
using UnityE
public class UnitySingleton&T& : MonoBehaviour
& && &where T:Component {
& && &private static T _
& && &public static T Instance& && &{
& && && && && & get{
& && && && && && && && &if(_instance == null){
& && && && && && && && && && &_instance = FindObjectOfType(typeof(T)) as T;
& && && && && && && && && && &if(_instance == null){
& && && && && && && && && && && && && & GameObject obj = new GameObject ();
& && && && && && && && && && && && && & //obj.hideFlags = HideFlags.DontS
& && && && && && && && && && && && && & obj.hideFlags = HideFlags.HideAndDontS
& && && && && && && && && && && && && & _instance =(T) obj.AddComponent(typeof(T));
& && && && && && && && && && &}
& && && && && && && && &}
& && && && && && && && &return _
& && && && && & }
& && &public virtual void Awake()
& && && && && & DontDestroyOnLoad(this.gameObject);
& && && && && & if(_instance == null){
& && && && && && && && &_instance = this as T;
& && && && && & }
& && && && && & else{
& && && && && && && && &Destroy(gameObject);
& && && && && & }
至此,所有单例模式已经全部探讨完了,单例模式是最简单的设计模式,概念上没什么难懂的,只不过在unity中实现起来需要注意一下,
本文抛砖引玉,希望和各位探讨
什么是unity模式;unity 例模式;unity模式是什么意思;无法进入unity模式;unity模式;进入unity模式;unity 模式 有什么用;unity 单例模式
unity中之所以要用单例 也无非就是想操作场景中的物体
你这样new一个object挂上单例脚本和普通的单例没啥区别啊
黑金甲虫 发表于
unity中之所以要用单例 也无非就是想操作场景中的物体
你这样new一个object挂上单例脚本和普通的单例没啥区 ...
我这个单例是自动运行的,你试试便知,只要有一个脚本(如Manager类)继承泛型单例类,然后在任何一个脚本中实例化一下就能运行。
并且最大的好处是扩展性强,不知道你好好看了脚本没,Manager类里边任意添加内容,不用再写单例部分。
功能上没有区别,但是你要是一个个场景都去建单例,岂不是很麻烦
当然大家习惯了什么方法就怎么去做,我这个也说明了就是探讨探讨
uk666 发表于
我这个单例是自动运行的,你试试便知,只要有一个脚本(如Manager类)继承泛型单例类,然后在任何一个脚 ...
为啥一个一个写。。。
你能写继承我就不能写?
另外我也是在探讨你这个实用性
我就问一句,场景中的物体引用你怎么控制?
别告诉我你再去find
feng1234665
总结如下:
为了单例而单例,不可理喻
黑金甲虫 发表于
为啥一个一个写。。。
你能写继承我就不能写?
另外我也是在探讨你这个实用性
既然探讨开了,我们就说说
unity中之所以要用单例 也无非就是想操作场景中的物体,这句话我不同意,我认为用单例的地方是为了引用方便,并且避免了重复实例化。并且我认为单例不会去操作场景里的物体,试问,一个跨场景的单例脚本你想让他操作哪个物体?我严重怀疑这位老兄真正理解单例模式吗?
单例里面可能有一些成员变量和方法,写在里面是为了其它脚本方便引用。所以你恰恰说反了,单例为什么要find?需要find的工作交给其它脚本做好了。
这位甲虫老兄可能水平很高看不起这类小脚本,你不喜欢可以无视。但是千万不要趾高气扬。我也没说我这有多好。但你要说不好,你写个好的我的我学习学习可否?
unity中之所以要用单例 也无非就是想操作场景中的物体,这句话我不同意,我认为用单例的地方是为了引用方便,并且避免了重复实例化。
你说的我只同意一部分,但在unity中避免了重复实例化绝大多数是游戏的主角(Only one),其它还有需要 避免了重复实例化 的物体或角色吗????如果你能举出 在一个场景中 可能被 重复实例化 的物体或角色 ,你就能说服我了,但你不可能举出来吗{:86:}
zhuping582
学习学习了& && && && && && && && && && && && && && && && && &
yashuwa0622
衡量的标准应该有且只有一个:能否解决问题。
maxcs2012 发表于
unity中之所以要用单例 也无非就是想操作场景中的物体,这句话我不同意,我认为用单例的地方是为了引用方便 ...
需要避免重复实例化的很多,比如,一个全局的SoundManager,一个GlobleManager,InputListener。。。每个场景里面的LevelManager,GUIController...太多了,并不是看得见的才需要单例
yashuwa0622 发表于
衡量的标准应该有且只有一个:能否解决问题。
我贴出来脚本肯定是在我自己的工程里验证过的,我也比较过很多单例的写法,目前为止觉得这是一种比较好的实现方式(unity中)
uk666 发表于
需要避免重复实例化的很多,比如,一个全局的SoundManager,一个GlobleManager,InputListener。。。每 ...
主角在每个场景都只有唯一一个哦,而这些脚本(个全局的SoundManager,一个GlobleManager,InputListener等等)都是符加到主角这个GameObject身上的,所以他们也是唯一的,那单例模型还有什么用???我说的对不对?{:86:}
楼上的蛮牛你真是让我哭笑不得,我不知该怎么给你解释...
1.脚本不一定要挂到某个GO上才能发挥作用
2.脚本不一定要挂到player上才叫单例
3.GO是GO,脚本是脚本,一个场景里,可以每个GO都带一个脚本,也可以只有一个脚本管理所有的GO,脚本是用来操作GO的,是凌驾在GO之上的,不知我说的明白不明白
4.先入门再来讨论设计模式吧,不是我要打击你,你的基础概念很模糊,应该试着自己多写点慢慢就知道了
uk666 发表于
楼上的蛮牛你真是让我哭笑不得,我不知该怎么给你解释...
1.脚本不一定要挂到某个GO上才能发挥作用
2.脚本 ...
单例模式不就是在哪个区域中保证某一脚本的全局唯一性吗?而主角就是全局最唯一的,所以其它全局控制类都应该放在它身上,所以根本没有必要写什么单例模型在unity程序
我认为所有设计先要站在逻辑设计上思考(逻辑设计上能优化了为什么非要设计模式解决?难道就因为你会设计模式?设计模式是要 高内聚 低耦合 易复用,你认为你在单个u3d项目有必要吗?显然你只学会了设计模式的代码而没有学会设计模式的思想,为模式而模式 你也只是初级入门者
maxcs2012 发表于
单例模式不就是在哪个区域中保证某一脚本的全局唯一性吗?而主角就是全局最唯一的,所以其它全局控制类都 ...
你还是没搞清楚脚本和gameobject之间的关系,我不是说我设计模式学得有多好,我本来就是初级入门者,但是我不会的东西我不会参与讨论,很简单,因为我不会。
你当然可以说unity中根本不需要写单例,不写也没什么大不了,其它的方式一样实现,没有什么是必须要用某种方式实现的,不用单例,我全部静态引用就完了。我全部find就完了,我全部getcomponent就完了,一样。但如果是这样的逻辑,又要OO干什么,全部用函数编程也可以,要observer模式干什么,所有脚本全都互相引用。
游戏编程中为什么没必要用设计模式?一个游戏至少几十个脚本,怎么组织,怎么通讯才最有效,为什么不能借鉴设计模式?
什么是单例?场景中只有一个物体,这个物体就叫单例吗?我场景里只有一盏灯,也叫单例吗?
我就是把我认为好的一个单例实现方式拿上来讨论一下,没想到话题的发展已经远远超出了脚本本身,真正的脚本,反倒没有多少人看,这就就是现在的现状,浮躁...
我不会再在这里发脚本,此贴封贴,我也不会再回复,谢谢大家。
查看完整版本: