首页 > 解决方案 > 在ue4 c ++中初始化静态变量

问题描述

我有一个演员班ANodeBase。每个节点必须有一个唯一的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 个对象。不知道如何解决这个问题以及为什么会发生

标签: c++staticunreal-engine4static-variables

解决方案


正如我们所发现的,虚幻创建了调用构造函数的 CDO(类默认对象)。因此,我将我的代码转移到BeginPlay()现在它的工作。


推荐阅读