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