c++ - 在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 个对象。不知道如何解决这个问题以及为什么会发生
解决方案
正如我们所发现的,虚幻创建了调用构造函数的 CDO(类默认对象)。因此,我将我的代码转移到BeginPlay()
现在它的工作。
推荐阅读
- javascript - 时间序列数据的堆积面积图
- eventtrigger - 任意宽度触发
- laravel - 抛出 ErrorException 并显示消息“尝试获取非对象的属性 'subo_name'
- javascript - 访问数据表不可见复选框
- julia - Julia - 实现 to_index(::Symbol)
- mqtt - 如何使用本机 MQTT 设置 Azure IoT 中心“系统属性”?
- date-range - Google Data Studio:如何在日期范围过滤器中仅选择一天
- vhdl - FPGA中数据传输的设计模式
- wordpress - Wordpress - 使用 previous_post_link() 和 next_post_link() 时删除分隔符
- amazon-web-services - 如何在 Docker 上获取 AWS 凭证和访问 S3