2016-10-04 59 views
1

我和我的朋友正在构建一个简单的闲置游戏作为我们团结的第一个项目。 我们已经到了建立脚本的地步,该脚本处理所有计算,并与玩家看到的每个GameObject进行通信。团结,我应该附加什么对象我的游戏引擎脚本

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

我们宁可不使用GameObject因为:

1)GameObject将是一个矫枉过正

2)GameObject就在于空间,我所有的“体检”对象的存在(这将是无用的,因为脚本不必“存在的地方”)

第一次发布的计算器,如果我犯了任何错误,请告诉我^^

+0

也许这个问题应该在http://gamedev.stackexchange.com/? – baudsp

+1

这里很好,因为它涉及到编程。这两个网站上有很多Unity3D问题 – sokkyoku

回答

6

公约说,把它放在日e主摄像头或空的GameObject

如果你真的不想这样做,你可以让你的类是静态的。

如果你的课程从MonoBehaviour继承,你必须将它附加到GameObject。如果你想将它附加到GameObject它必须从MonoBehaviour继承。

如果你想更好地了解统一的方式,我建议你在实体组件系统读了起来:

GameObject是实体

MonoBehaviour是组件

服务和管理普遍得到落实作为Unity中的组件,然后附加到主摄像头或清空以它们命名的GameObject

+0

非常感谢你^^ 所有这些信息都非常有用! 我相信我们会简单地将脚本附加到相机上^^ –

2

您可以创建一个通常的单例类,而“游戏初始值设定” monobehaviour,将初始化所有singletone经理,面料等..

就在这个monobehaviour空游戏物体用代码添加到每一个场景这样的:

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

或者在scriptableObjects的情况下,

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

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

+0

如果您打算将脚本附加到空的游戏对象,那么拥有一个单例有什么意义?这是没有意义的 – sokkyoku

+0

当你切换场景时,游戏对象将被重新创建所有monobehaviours。即使你使用DontDestroyOnLoad(),要让所有的管理者只有一个实例,并保存他们的状态,当他们是monobehaviours时,也有点困难。 此外,新monobehaviours可能需要时间来加载/ GC,浪费CPU时间。 –

+0

使用'DontDestroyOnLoad()'并不困难,我没有任何问题确保我只有一个经理使用它的实例。虽然你没有回答我以前的担忧,但你的回答似乎表明单身人士也是一个附属于游戏物体的“MonoBehaviour”。 – sokkyoku

相关问题