Unity - A计划(永久有效期) 扫二维码继续学习 二维码时效为半小时

(197评价)
价格: 4431.00元
单例模式疑问??
Oneart发起了问答2018-01-26
4
回复
837
浏览
   
这是最近的教程里面的单例模式
 private static GameManager _instance;
    public static GameManager Instance
    {
        get
        {
            return _instance;
        }
    }
 
 
void Awake () {
        _instance = this; 
	}





这是秘密行动里的单例模式
 public static GameManager _instance;
 
void Awake () {
        _instance = this; 
	}


我想问这2者有什么区别???

 

所有回复
  • 缘分 2018-01-26

    基本都是一样。有点区别是当代码瞬间要用到单例模式时如果Awake还没执行就会报错。要防止这样出现就用第一种单例模式...我是代码写多了,自己悟出来的...不知道我说的对不对。有点要注意,属性用了get{}一定要加set{}如果不加在vs里不会报错。但在unity中就会报错...原因我也不知道,但一定要加上。

    还有-5条回复,点击查看
    你还没有登录,请先登录注册
  • 老师_德鲁伊 2018-01-26

    第一种对外界只提供了Get方法,外界只能调用但是不能修改。第二种外部既可以访问又可以修改。为了安全性,建议使用第一种。

    还有-5条回复,点击查看
    你还没有登录,请先登录注册
  • jinglei636 2018-01-27

    这个就是一个权限的问题,面向对象程序设计有一个特性就是封装,说白了就是权限,能给别人获取的就写成public的,不能给获取看的就写成private的,这种既想让别人获取还不想让别人修改的就用属性,就是第二种。还有就是一楼说的有问题,可以只写get不写set。我刚刚就是这么写的,unity没有报错

    还有-5条回复,点击查看
    你还没有登录,请先登录注册
  • jinglei636 2018-01-27

    封装为的就是安全,举个手机的例子,你买的手机并不能看到电路板这些东西,因为这些东西不能随随便便让客户动,以免造成手机被损坏等问题,手机厂商只是给你提供屏幕、按钮等。电路板就相当于private的变量,屏幕就相当于public变量

    还有-5条回复,点击查看
    你还没有登录,请先登录注册
发表回复
你还没有登录,请先 登录或 注册!