中文文档(不是很全,不过也够看了)
链接:https://pan.baidu.com/s/1ZJHU286-5qwbHhD9FbL4KQ
提取码:fxj1
下面是我自己学习是觉得比较重要的地方
一 .中断类型
Self :当一直在执行Log1时,CanSeeObject发生改变,Sequence会中断自身,然后执行Log2
LowerPriority :当正在执行Log2时,CanSeeObject发生变化,会中断Log2然后去执行Sequence里面的
Both :两种情况都包含
二 .如何使用其他节点的数据(同一树中)
方法一
1.在分享数据和使用数据的脚本中分别使用Share类型(例如:SharedBool,SharedTransform)的来定义数据变量;
share和普通类型的区别:share可以访问行为树中的局部变量,也方便为外部修改,普通类型只能在特定树特定节点去修改,share在使用的时候必须.Value去访问它的值,普通类型就不需要
2.在分享数据的脚本中对分享数据进行赋值,
3.在行为树面板中添加同样类型的数据变量
(4)在分享数据的节点和使用数据的节点,进行赋值操作,这样数据就传递过去了
方法二:
例如下面这样的 TaskA 和 TaskB
using UnityEngine;
using BehaviorDesigner.Runtime.Tasks;
public class TaskA : Action
{
public TaskB referencedTask;public void OnAwake(){
Debug.Log(referencedTask.SomeFloat);}
}
using UnityEngine;
using BehaviorDesigner.Runtime.Tasks;
public class TaskB : Action
{
public float SomeFloat;
}
将这两个任务添加到行为树编辑器中:并在TaskA节点点击Select关联B
此时就可以在TaskA中使用TaskB的数据
Task 的引用也可以是数组引用
三 .变量同步器
1.指定GameObject,其中包含具有要同步的共享变量的行为树。
2.从弹出框中选择要使用的共享变量。
3.指定方向。如果箭头指向左侧,则您正在设置“共享变量”值。如果箭头指向右边,则您将获得“共享变量”值。
4.指定同步类型。当前支持以下类型:行为设计器,属性,动画器和PlayMaker。
5.其余步骤将取决于选定的同步类型。在此示例中,选择了“属性”,因此您需要选择包含要与“共享变量”同步的属性的组件。
6.单击添加。
四 .行为树的局部变量和全局变量
局部变量(不在行为树中也可以获取到)
全局变量
五 .自定义数据类型
定义
using BehaviorDesigner.Runtime;[System.Serializable]
public class SharedNew_Type : SharedVariable<New_Type>
{
public static implicit operator SharedNew_Type(New_Type value){
return new SharedNew_Type {
Value = value };}
}[System.Serializable]
public class New_Type
{
public int @int = 1;public bool @bool = false;
}
调用
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using BehaviorDesigner.Runtime.Tasks;
using BehaviorDesigner.Runtime;public class TaskB : Action
{
public SharedNew_Type s_NewType;public float SomeFloat = 1;public override void OnAwake(){
base.OnAwake();s_NewType.Value = new New_Type();Debug.Log(s_NewType.Value.@int);Debug.Log(s_NewType.Value.@bool);}}
六 .树的启用和禁用
tree.EnableBehavior(); //启用
tree.DisableBehavior(); //禁用
七 .制作流程(只是我自己的理解,可能有偏差)
1.找出所有单个完整的子树,并在面板上制作好(完整的子树例如:顺序执行的是否可以攻击的判断和攻击的行为)
2.确定各个子树和优先级,并依次排好序,(例如:胜利流程>攻击流程>移动流程)
3.确定各个子树之间关系选择合适的组合节点和装饰节点连接
4.测试所有情况是否符合设计要求