在Unity3D里,如何创建一个单例游戏管理的好方法,可以作为静态变量全局类被访问,为每一个抽出值的类输出相同的常量值?在Unity里实现它的方法是什么?我需要把它添加到GameObject吗?是否可以让它存在于一个文件夹里,而不在场景中出现?
在Unity3D里,如何创建一个单例游戏管理的好方法,可以作为静态变量全局类被访问,为每一个抽出值的类输出相同的常量值?在Unity里实现它的方法是什么?我需要把它添加到GameObject吗?是否可以让它存在于一个文件夹里,而不在场景中出现?
1 回答1.5k 阅读✓ 已解决
917 阅读
862 阅读
来自@Kay 的答案:
这个要看情况。我用两种方法使用单例,一是添加到GameObject的组件,而是作为独立的类,而不是来自于MonoBehaviour。我觉得问题在于实例是如何绑定到场景、游戏对象的lifcycle的。不要忘了有时候组件是很方便的,尤其是引用MonoBehaviour对象时,更加简单安全。
我设计基于单例(类型2)的组件的两个部分:一个叫做Main的永久GameObject,包含所有组件。另一个是叫做MainComponentManager的单例(类型1)来管理它。这里有些DEMO代码:
现在,其他先注册成为Main组件的单例是这个样子的: