Unity,我应该将我的游戏引擎脚本附加到什么对象

Unity, to what object should I attach my game engine script

我和我的朋友正在构建一个简单的闲置游戏作为我们在 unity 中的第一个项目。 我们已经到了构建一个脚本来处理所有计算的地步,并与玩家看到的每个 GameObject 进行通信。

现在,我们应该将此脚本附加到什么?

我们宁愿不使用 GameObject 因为:

1) GameObject 太过分了

2) GameObject 位于 space 中,我所有的 "physical" 对象都存在于此(那将是无用的,因为脚本不必 "exist somewhere")

第一次在Whosebug发帖,如有错误请指出^^

惯例说放在主摄像头上还是空的GameObject

如果你真的不想做任何一个,你可以让你的 class 静态。

如果您的 class 继承自 MonoBehaviour,您必须将其附加到 GameObject。如果你想把它附加到 GameObject 它必须继承自 MonoBehaviour.

如果您想更好地理解 Unity 方式,我建议您阅读实体组件系统:

GameObject 是实体

MonoBehaviour 是组件

服务和管理器通常在 Unity 中作为组件实现,然后附加到主摄像头或以它们命名的空 GameObjects。

您可以创建一个普通的单例 class 和 "Game Initializer" 单行为,这将初始化您所有的单例管理器、结构等...

只需使用如下代码将此单一行为添加到空游戏对象中的每个场景:

if(GameManager.instance == null)
   new GameManager();

或者对于 scriptableObjects,

if(GameManager.instance == null)
   gameManager.init()

此外,一个好的选择是使用实体系统模式,这里是统一框架(Unity-Ash、Entitas 等)