在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()
,现在可以使用了。
我有一个演员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()
,现在可以使用了。