kbengine_ue4_plugins
kbengine_ue4_plugins copied to clipboard
插件里面对象在编辑器值初始化一次的问题
bool KBEngineApp::initialize(KBEngineArgs* pArgs)
{
if (isInitialized())
return false;
EntityDef::initialize();
// 允许持久化KBE(例如:协议,entitydef等)
if (pArgs->persistentDataPath != TEXT(""))
{
KBE_SAFE_RELEASE(persistentInfos_);
persistentInfos_ = new PersistentInfos(pArgs->persistentDataPath);
}
// 注册事件
installEvents();
pArgs_ = pArgs;
reset();
return true;
}
if (isInitialized())
return false;
这个代码只会在编辑器第一次运行时初始化?应该每次编辑器上运行都初始化,因为上层可能会修改配置,
问题是: bool isInitialized() const { return pArgs_ != NULL; } 这个pArgs_在编辑器器运行关闭时没有释放。
bool UKBEMain::destroyKBEngine()
{
if (!KBEngineApp::getSingleton().isInitialized())
return false;
KBEngineApp::getSingleton().destroy();
return true;
}
这没有地方调用!
你可以给点建议怎么改
我改一下看看!
其实不改也可以,但是要蓝图层主动在gameinstance exit时调用一次destroyKBEngine, 我看demo在login和selectedlevel的两个关卡里面都丢了KBECom. 到选人关卡时,com会重新生成,kbengine对象不必释放,不能直接放在com里面调用。
之前就是找不到比较好的虚函数能在gameinstance exit让我捕获到, 所以就这样了, 目的也是让自己手动找地方调用destroyKBEngine