-
Notifications
You must be signed in to change notification settings - Fork 0
云却 edited this page Oct 29, 2023
·
1 revision
想法的出发点是animator,允许节点自动过渡到下一个节点,后者运行到指定百分比后切换下一个节点。
animator 状态机节点因为于动画严重耦合,所有也混入了时间相关功能。
对于行为树,为每个节点增加时长设定,执行一定时间自动完成,这样是不现实的。 需要声明非常多的冗余成员,造成额外开销。
Q:那么怎么为所有节点都增加一个额外的功能,并且这个功能是可选的。
所有需要一种OOB(out-of-band 带外数据)设计。
三种实现思路:
- 增加一个强化的节点基类型。
- 缺点是不能在使用时动态决定是否包含时间功能。
比如一个跟随节点,在某个分支需要执行一段时间后自动完成。而另一个分支完全不需要时间相关功能。
- 缺点是不能在使用时动态决定是否包含时间功能。
- 强化装饰器
- 现有装饰器机制,是易用性和性能的折衷产物,仅支持在Tick过程中有限的调用。
如果设计更多的装饰器调用点,会严重影响性能。
主要矛盾点是Tick调用点的设计。
- 现有装饰器机制,是易用性和性能的折衷产物,仅支持在Tick过程中有限的调用。
- 嵌套节点
- 嵌套关系而不是父子关系。
- 这是类似OneChild节点的机制。在节点内容纳一个真正的节点。
然而实际上是反过来的,内部节点才是本质,在外面包裹一层额外逻辑。Wrapper包装器和装饰器的区别。
包装器看作一个整体上的修改,重写。包装器对目标具有更强的控制权。
装饰器看作对某个局部功能的修改,强化,重写。
需要编辑器UI支持,工作量可以预想的很大。