腾讯Behaviac Designer 和Unity连调行为树

1. 克隆源码

https://github.com/Tencent/behaviac/

2. 编译生成BehaviacDesigner.exe

腾讯Behaviac Designer 和Unity连调行为树_第1张图片

3. 找到并打开BehaviacDesigner.exe(先不急着填弹出的路径workspace 设置框)

腾讯Behaviac Designer 和Unity连调行为树_第2张图片

4. 新建一个Unity 空工程,并在此处下载behaviac unitypackage

腾讯Behaviac Designer 和Unity连调行为树_第3张图片

5. Unity中导入该Unitypackage

6. 在Unity 工程Assets中创建Resources/behaviac/exported 文件夹

7. 回到第三步,设置工作路径如下

腾讯Behaviac Designer 和Unity连调行为树_第4张图片

8. 创建一个行为树命名为Agent,创建一个agent的派生类叫Player(之后会生成一个Player.cs脚本里面包含的待实现的行为接口), 仿照下面完善该行为树,在对应节点上右键,添加断点。最后导出

注意,这个行为树中的两个wait()对调试很关键,其中数字是单位是毫秒,可以让整个树在这里等待一定时间,而这个时间内正好可以用来手动连接服务器进行调试。如果没有这个wait,那么一旦在unity中点击运行,行为树逻辑已经跑完,而BehaviaDesigner都没来得及连接到Unity.

腾讯Behaviac Designer 和Unity连调行为树_第5张图片

9.查看Unity工程中的文件树

腾讯Behaviac Designer 和Unity连调行为树_第6张图片

10. Unity创建一个空物体,命名为behaviac, 挂载Player.cs脚本

腾讯Behaviac Designer 和Unity连调行为树_第7张图片

11. 用下面的Player.cs替换你的Player.cs

// -------------------------------------------------------------------------------
// THIS FILE IS ORIGINALLY GENERATED BY THE DESIGNER.
// YOU ARE ONLY ALLOWED TO MODIFY CODE BETWEEN '///<<< BEGIN' AND '///<<< END'.
// PLEASE MODIFY AND REGENERETE IT IN THE DESIGNER FOR CLASS/MEMBERS/METHODS, ETC.
// -------------------------------------------------------------------------------

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

///<<< BEGIN WRITING YOUR CODE FILE_INIT

///<<< END WRITING YOUR CODE

public class Player : behaviac.Agent
///<<< BEGIN WRITING YOUR CODE Player
///<<< END WRITING YOUR CODE
{
#region 格式化的内容,直接拷贝
    behaviac.EBTStatus _status = behaviac.EBTStatus.BT_RUNNING;
    private static string ExportedFilePath
    {
        get
        {
            string relativePath = "/Resources/behaviac/exported";

            if (Application.platform == RuntimePlatform.WindowsEditor)
            {
                return Application.dataPath + relativePath;
            }
            else if (Application.platform == RuntimePlatform.WindowsPlayer)
            {
                return Application.dataPath + relativePath;
            }
            else
            {
                return "Assets" + relativePath;
            }
        }
    }
    private bool InitPlayer()
    {
        behaviac.Debug.LogWarning("InitPlayer");

        bool bRet = this.btload("Agent");
        if (bRet)
        {
            this.btsetcurrent("Agent");
        }

        return bRet;
    }
    private bool InitBehavic()
    {
        behaviac.Debug.LogWarning("InitBehavic");

        behaviac.Workspace.Instance.FilePath = ExportedFilePath;
        behaviac.Workspace.Instance.FileFormat = behaviac.Workspace.EFileFormat.EFF_xml;

        return true;
    }
    void Awake()
    {
        InitBehavic();

        InitPlayer();
    }
    

    void Update()
    {
        if (_status == behaviac.EBTStatus.BT_RUNNING)
        {
            behaviac.Debug.LogWarning("Update");
            behaviac.Workspace.Instance.Update();//要想能调试,这句必须有
            _status = this.btexec();
            
        }
    }
 #endregion
    public void drift()
	{
        ///<<< BEGIN WRITING YOUR CODE drift
        UnityEngine.Debug.Log("drift");
        ///<<< END WRITING YOUR CODE
    }

	public bool IsInCollision()
	{
///<<< BEGIN WRITING YOUR CODE IsInCollision
	return false;
///<<< END WRITING YOUR CODE
	}

	public void moveForward()
	{
        ///<<< BEGIN WRITING YOUR CODE moveForward
        UnityEngine.Debug.Log("moveForward");
///<<< END WRITING YOUR CODE
	}

///<<< BEGIN WRITING YOUR CODE CLASS_PART

///<<< END WRITING YOUR CODE

}

///<<< BEGIN WRITING YOUR CODE FILE_UNINIT

///<<< END WRITING YOUR CODE

12. 点击Unity 运行,紧接着按照下图步骤在BehaviacDesigner端连接Unity(所有操作默认即可)

腾讯Behaviac Designer 和Unity连调行为树_第8张图片

13. 最多等待20s, 可以看到BehaviacDesigner端断点被击中(断点从紫色变成黄色)

这里让这个断点重复50次,如果想让断点继续执行下一步,就点击左上角蓝色小三角

腾讯Behaviac Designer 和Unity连调行为树_第9张图片

tips:

  • F9可以直接在节点上打断点,多次按F9就是取消断点
  • 代码中IsInCollision() 中return false;换成return true; 行为树逻辑就走了上面drfit() 而不是moveForward(). 可以自己试试。下面截图是我跑出来的效果

腾讯Behaviac Designer 和Unity连调行为树_第10张图片

你可能感兴趣的:(unity,游戏引擎)