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

(196评价)
价格: 4049.00元
Stealth 秘密行动问题
whennoon丶发起了问答2018-03-07
1
回复
633
浏览

一个很有意思的问题,老师开发的时候是在unity4.6版本下开发的游戏,其中警报函数通过一个状态变量(默认为false)来设置是否开启警报模式,之后我做了一个单例模式,私有化构造方法,这时候我通过外部的代码获取了这个单例对象,修改了他的状态变量变为true,我通过打印调试发现确实状态被修改了(7次true的打印),但是update中的方法里的状态变量一直未false未被修改(700多次一直打印false),最后我通过修改状态变量为static完成了这个修改,不过这样安全性会降低,外部能直接访问这个状态变量,修改状态变量值,较为优选的方法应该是单例模式,私有化状态变量,通过get和set方法来修改变量的值,不过就会出现这种问题,我之前学了长时间的java,猜想是不是因为unity面板上挂载的对象和运行时获取修改的对象不是同一个?但是我私有化了构造函数,只给出了一个获取方法,就是为了确保整个application中只有一个对象,方便修改与操作,那如果不是同一个,就会有2个update方法在调用,这样就有冲突问题,不过这样解释之前没单例的时候有些代码控制类上的变量又有效了,就很奇怪,最后如果我要通过单例获取对象,私有化状态变量通过get和set方法来修改变量控制警报而不是static,这个问题要如何解决呢?

所有回复
  • siki 2018-03-07

    有一点要注意的地方

    如果你的一个脚本是继承自Mono的话,那么有几点是一定要注意的

          这个脚本不能自己去new对象

        不能给这个脚本创建构造方法

    当脚本继承了mono后,它就是一个组件,对于组件只能挂在游戏物体身上让unity去构造,我们不能构造不能自己new

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