Skip to content
云却 edited this page Oct 29, 2023 · 1 revision

构想

强化装饰器 可嵌套节点

想法的出发点是animator,允许节点自动过渡到下一个节点,后者运行到指定百分比后切换下一个节点。

animator 状态机节点因为于动画严重耦合,所有也混入了时间相关功能。

对于行为树,为每个节点增加时长设定,执行一定时间自动完成,这样是不现实的。 需要声明非常多的冗余成员,造成额外开销。

Q:那么怎么为所有节点都增加一个额外的功能,并且这个功能是可选的。

所有需要一种OOB(out-of-band 带外数据)设计。
三种实现思路:

  • 增加一个强化的节点基类型。
    • 缺点是不能在使用时动态决定是否包含时间功能。
      比如一个跟随节点,在某个分支需要执行一段时间后自动完成。而另一个分支完全不需要时间相关功能。
  • 强化装饰器
    • 现有装饰器机制,是易用性和性能的折衷产物,仅支持在Tick过程中有限的调用。
      如果设计更多的装饰器调用点,会严重影响性能。
      主要矛盾点是Tick调用点的设计。
  • 嵌套节点
    • 嵌套关系而不是父子关系。
    • 这是类似OneChild节点的机制。在节点内容纳一个真正的节点。
      然而实际上是反过来的,内部节点才是本质,在外面包裹一层额外逻辑。Wrapper包装器和装饰器的区别。
      包装器看作一个整体上的修改,重写。包装器对目标具有更强的控制权。
      装饰器看作对某个局部功能的修改,强化,重写。
      需要编辑器UI支持,工作量可以预想的很大。