不久前,我开始与Unity合作,但我仍然在紧密耦合脚本的问题上挣扎。如何构造代码以避免出现此问题?
例如:
我想在单独的脚本中拥有健康和死亡系统。我还希望拥有不同的可互换步行脚本,这些脚本可让我更改玩家角色的移动方式(如Mario中的基于物理的惯性控件,以及Super Meat Boy中的紧致,抽搐控件)。Health脚本需要保留对Death脚本的引用,以便在玩家的Health达到0时可以触发Die()方法。Death脚本应该保留对所使用的walking脚本的一些引用,以禁止在死亡时行走(I厌倦了僵尸)。
我通常创建界面,比如IWalking
,IHealth
和IDeath
,这样我就可以改变在心血来潮这些元素没有打破我的代码的其余部分。我希望它们由播放器对象上的单独脚本设置,例如PlayerScriptDependancyInjector
。也许这脚本将会为社会IWalking
,IHealth
和IDeath
属性,使依赖可以通过从检查关卡设计师通过拖放相应的脚本进行设置。
这样一来,我可以轻松地将行为添加到游戏对象中,而不必担心硬编码的依赖项。
Unity中的问题
该问题是,在团结,我不能在检查暴露的接口,如果我写我自己的检查人员,引用不会得到序列化,这是一个很大的不必要的工作。这就是为什么我只剩下编写紧密耦合的代码的原因。我的Death
脚本公开了对脚本的引用InertiveWalking
。但是,如果我决定要让玩家角色紧密控制,就不能只拖放TightWalking
脚本,就需要更改Death
脚本。糟透了 我可以应付,但是每次我做这样的事情,我的灵魂都会哭。
Unity中接口的首选替代方法是什么?我该如何解决这个问题?我找到了,但是它告诉了我我已经知道的,并且没有告诉我如何在Unity中做到这一点!这也讨论了应该做什么,而不是如何做,也没有解决脚本之间紧密耦合的问题。
总而言之,我觉得这些是为那些具有游戏设计背景来到Unity的人而写的,他们只是学习如何编写代码,而对于普通开发人员而言,关于Unity的资源很少。有什么标准的方法可以在Unity中构造代码,还是我必须弄清楚自己的方法?
The problem is that in Unity I can't expose interfaces in the inspector
我不理解您所说的“在检查器中公开界面”是什么意思,因为我的第一个想法是“为什么不呢?”