我想在 Unity3D 中创建一个主游戏对象,它将充当与控件相关的任何内容的命令中心,以便游戏中需要知道玩家是否试图向右走的任何组件都会收到通知或状态改变并采取相应行动。我对 Unity 编程和脚本编写有点陌生,所以我知道这是可能的,但我不知道如何专门使用引擎来实现。
我遇到的一些概念是:
- 状态改变技术
- 单例上帝类
- 父游戏对象及其子游戏对象向上发送消息并向下接收消息
- 继承充当接口(interface)的抽象类,并在某个集合中实现并迭代以获取调用的消息
如果你们对这个主题有任何见解,那就太好了。我基本上想知道解决这个问题的好方法是什么,如何决定一个好的方法(优点与缺点),或者我是否全错了。 :)
我正在寻找的是您选择的用于此目的的方法的实现示例。无需深入研究每个单独的方法。也许简要描述一下您决定采用这种模式的原因会很棒!
提前致谢!
最佳答案
好吧,你可以使用 C# events :
1)创建CommandCenter类(MonoBehaviour),实现一些需要共享的事件,并创建一些公共(public)方法来调用它们。
2) 每当你处理按钮播放器按下时,调用 CommandCenter 中调用事件的方法(或者,你可以将事件公开并直接调用 tham)
3)在每个组件中,女巫应该知道一些事件,在Awake
方法中,执行以下操作:
var commandCenter = FindObjectOfType(CommandCenter);
commandCenter.MyEvent += localMyEventHandler;
4)不要忘记取消订阅销毁事件:
OnDestroy ()
{
var commandCenter = FindObjectOfType(CommandCenter);
commandCenter.MyEvent -= localMyEventHandler;
}
5) 因此,在 localMyEventHandler
方法中您可以处理此事件。
关于unity-game-engine - 在 Unity3D 中创建 Controller 管理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13795624/