首页 > 解决方案 > Unity中脚本之间的最佳通信方式是什么

问题描述

例如,假设我有一个附加了管理器脚本的游戏对象 A,它在开始时会生成 x 数量的附加了 B 脚本的游戏对象。

当带有脚本 B 的游戏对象这么说时,带有脚本 C 的不同游戏对象应该做某事。

所以问题是,这三个人交流的最佳方式是什么?

显然,脚本 B 可以只调用脚本 C,但是我觉得这种方法缺乏结构和组织。

脚本 A 也可以引用脚本 C,脚本 B 可以告诉脚本 A 对脚本 C 执行操作。

我觉得我应该遵循某种规则,但我还没有遇到过。任何帮助深表感谢!

标签: c#unity3d

解决方案


显然,脚本 B 可以只调用脚本 C,但是我觉得这种方法缺乏结构和组织。

真的。这就是GameObject.SendMessage函数的用途。不幸的是,它很慢,我不推荐它,但值得一提。

如果您有许多需要与其他对象通信的对象,请使用 和 实现事件管理eventdelegate。这是正确的方法。你可以在这里找到完整的EventManager实现。

有了它,您可以通过以下方式将任意数量的函数注册到事件中:

EventManager.StartListening("jump", someFunction);

从事件中取消注册任何函数:

EventManager.StopListening("jump", someFunction);

从那里,您可以在任何监听它的对象上调用该事件:

EventManager.TriggerEvent("jump");

推荐阅读