首页 > 解决方案 > BTSK 顶部的 C++ 行为树代码表示 Behavior() : m_eStatus(BH_INVALID) {} 是什么意思?

问题描述

我是 C++ 编程新手,一直在研究 Behavior Tree Starter Kit 以构建新的 AI 框架。我很难理解行为树入门工具包代码。鉴于此用于游戏 AI 行为树的 C++ 代码,顶部的代码部分(似乎正在设置初始状态或其他内容)是什么意思?什么是虚拟作品?


Behavior()
:   m_eStatus(BH_INVALID)
{
}

virtual ~Behavior()
{
}

这是完整的代码,也是什么virtual Status update() = 0;意思:

class Behavior
/**
 * Base class for actions, conditions and composites.
 */
{
public:
    virtual Status update()             = 0;

    virtual void onInitialize()         {}
    virtual void onTerminate(Status)    {}

    Behavior()
    :   m_eStatus(BH_INVALID)
    {
    }

    virtual ~Behavior()
    {
    }

    Status tick()
    {
        if (m_eStatus != BH_RUNNING)
        {
            onInitialize();
        }

        m_eStatus = update();

        if (m_eStatus != BH_RUNNING)
        {
            onTerminate(m_eStatus);
        }
        return m_eStatus;
    }

    void reset()
    {
        m_eStatus = BH_INVALID;
    }

    void abort()
    {
        onTerminate(BH_ABORTED);
        m_eStatus = BH_ABORTED;
    }

    bool isTerminated() const
    {
        return m_eStatus == BH_SUCCESS  ||  m_eStatus == BH_FAILURE;
    }

    bool isRunning() const
    {
        return m_eStatus == BH_RUNNING;
    }

    Status getStatus() const
    {
        return m_eStatus;
    }

private:
    Status m_eStatus;
};

标签: c++game-aibehavior-tree

解决方案


推荐阅读