在ue4 c ++中初始化静态变量

Initializing static variables in ue4 c++

我有一个演员classANodeBase。每个节点必须有一个唯一的id。为了实现这一点,我创建了静态变量 id_counter.

代码:

//ANodeBase.h
static int id_counter;
//ANodeBase.cpp
#include "NodeBase.h"

int ANodeBase::id_counter = 0;

ANodeBase::ANodeBase()
{
    PrimaryActorTick.bCanEverTick = false;
    id = id_counter;
    id_counter++;//the only change to a variable in the project
}

问题是id_counter没有初始化,更准确地说,它被13初始化了,即使我重新启动ue4,即使我添加了一些代码并重新编译项目。当我创建其他演员时,他们增加了 1.

如果重要,直接在引擎中创建的对象是BP_NodePC : NodePC : NodeBase : Actor

有人可以解释为什么会发生这种情况或建议替代计数。

编辑: 由于某些未知原因,虚幻引擎在启动前创建了 12 个对象。不知道如何解决这个问题以及为什么会这样

我们发现,虚幻创建 CDO(class 默认对象),它调用构造函数。因此,我将我的代码转移到 BeginPlay(),现在可以使用了。