我想在Unity3D中制作一个主游戏对象,作为任何与控制相关的命令中心,这样游戏中任何需要知道玩家是否试图向右移动的组件都会收到通知或状态更改并采取相应行动。我是Unity编程和脚本的新手,所以我知道这是可能的,但我不知道如何具体使用引擎。
我遇到的几个概念是:
- 状态更改技术
- Singleton God类
- 带有向上发送消息并向下接收消息的子对象的家长GameObject
- 抽象类的继承,这些抽象类充当接口,并被实现到某个集合中,并通过迭代来获得调用的消息
如果你们对这个话题有任何见解,那就太好了。我基本上想找出解决这个问题的好方法,如何决定一个好方法(优点与缺点),或者我是否都错了。:)
我所要寻找的只是您选择的方法的一个实现示例,该方法适用于此目的。无需对每个单独的方法进行研究。也许简单描述一下你为什么决定你的模式会很棒!
提前感谢!
好吧,您可以使用C#事件:1) 创建CommandCenter类(MonoBehavior),在那里实现一些需要共享的事件,并创建一些公共方法来调用tham。2) 每当您处理按钮播放器按下时,请调用CommandCenter中的方法,该方法调用事件(或者,您可以将事件公开并直接调用tham)3) 在每个组件中,交换机应该知道一些事件,在Awake
方法中,执行以下操作:
var commandCenter = FindObjectOfType(CommandCenter);
commandCenter.MyEvent += localMyEventHandler;
4) 不要忘记取消订阅销毁事件:
OnDestroy ()
{
var commandCenter = FindObjectOfType(CommandCenter);
commandCenter.MyEvent -= localMyEventHandler;
}
5) 因此,在localMyEventHandler
方法中,您可以处理此事件。