在我的 Unity 游戏中,我有各种 NPC,它们在不同时间执行不同的任务。一切都是使用协程编码的,因为这是我刚开始时所知道的。 NPC 将使用协程来决定任务,然后执行与该任务关联的协程,然后再次启动 ChooseTask() 协程。冲洗并重复。一切都按其应有的方式运作。我的问题是:使用状态机重写所有内容对我有利吗?使用协程执行所有操作是否会降低性能?从开发的角度来看,使用状态机似乎更清楚,但如果一切正常,我的方法有什么重大缺点吗?
使用协程的一个潜在缺点是它们不可序列化,因此不能包含在保存中。通过手动编码状态机,您可以使状态可序列化。
就性能而言,它应该不会产生显着差异。协程依赖于可恢复迭代器函数,这些函数只是编译器生成的状态机,因此基本上是相同的事情。