包装Unity的C#Monobehavior是否有效?

时间:2018-12-28 04:09:34

标签: c# unity3d

我应该用我控制的另一个抽象类包装我的大部分(150+)C#单行为,并向其中添加函数吗?还是仅当说60%的单行为将使用我的特殊包装器类中的函数时,效率极低?另一种方法是向每个类添加onDestroy和其他各种功能。通过组合包含这些功能,而不是随处都自动继承它们,有什么好处?


我使用DoTween(补间库)和MEC(而不是协程)进行工作,并使用标签或在游戏对象上运行每个协程和补间。每当我执行这些操作时,我都会向为我跟踪它们的类注册标签或游戏对象。我这样做是为了我可以随时暂停游戏而不会弄乱Time.timeScale,并获得“真正的”暂停。使用MEC的缺点是,当您杀死游戏对象时,它不会自动停止协程—我想在包装类中手动执行此操作。这就是为什么我想知道是否应该这样做。

1 个答案:

答案 0 :(得分:2)

这实际上取决于您的游戏,但是简短的答案是: 是的,MonoBehaviours有很多开销,如果您在场景中有很多开销,这真的很明显,MonoBehaviour的实际问题是魔术方法(更新,启动,唤醒等)

article和此one表明,删除所有行为并由一个人来管理所有包装的行为,可以使性能提高多达11倍,

您还可以找到其他references来确切说明实现魔术方法(简短答案,而不是反思)时幕后发生的事情