kbengine_ue4_plugins icon indicating copy to clipboard operation
kbengine_ue4_plugins copied to clipboard

插件里面对象在编辑器值初始化一次的问题

Open marshal-it opened this issue 7 years ago • 4 comments

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;
}

这没有地方调用!

marshal-it avatar Oct 13 '17 07:10 marshal-it

你可以给点建议怎么改

kbengine avatar Oct 13 '17 07:10 kbengine

我改一下看看!

marshal-it avatar Oct 13 '17 07:10 marshal-it

其实不改也可以,但是要蓝图层主动在gameinstance exit时调用一次destroyKBEngine, 我看demo在login和selectedlevel的两个关卡里面都丢了KBECom. 到选人关卡时,com会重新生成,kbengine对象不必释放,不能直接放在com里面调用。

marshal-it avatar Oct 17 '17 09:10 marshal-it

之前就是找不到比较好的虚函数能在gameinstance exit让我捕获到, 所以就这样了, 目的也是让自己手动找地方调用destroyKBEngine

kbengine avatar Oct 20 '17 06:10 kbengine