zoukankan      html  css  js  c++  java
  • 行为树AI设计及BehaviorTree结构分析

    BehaviorTree树结构如下图:

    1574652259(1)

    图1:树的组织结构

    BehaviorTree继承Behavior并提供了操作树的方法,ExternalBehavior实例才是可序列化可视化编程载体。具体的每棵树实例是由BehaviorMananger运行时驱动。同时,BehaviorManager有UpdateIntervalType三种更新方式:EveryFrame(每帧更新)、SpecifySecods(在CoroutineUpdate协程定时更新)、Manual(手动更新)

    Task生命周期:

    image

    图二:Task生命周期


    我自己有几个小小总结

    1实例个数太多且树的结构非常复杂,会影响帧率稳定。而且不要频繁调用树实例中DisanbleBehavior和EnableBehavior方法,原因:TaskContainsMethod方法对根Task(也就是EntryTask)及所有子Task用反射查找实现了Task哪些方法,耗时严重。我采用的是手动更新,就很方便决定什么时候停更,而不是直接禁止。


    2行为树分层结构管理

    image

    图三:分层结构

    分层处理的目的是减少树中conditions公共条件计算,把策划设计的一颗复杂的树分解,把重要的信息计算放在决策层计算。

  • 相关阅读:
    Java泛型 E、T、K、V、N
    二维码生成,二维码中嵌套图片,文字生成图片
    线程之线程安全解决
    多线程的卖票示例来理解两种创建线程方法的区别
    多线程
    Object类
    Runtime
    9.Lambda表达式入门
    匿名内部类
    局部内部类
  • 原文地址:https://www.cnblogs.com/baolong-chen/p/11929706.html
Copyright © 2011-2022 走看看