所以几个月前我观看了这段视频,Epic 展示了他们新的虚幻引擎 4 开发者功能。抱歉,我找不到视频,但我会尽力解释。
引起我注意的一个特性是 C++“动态”修改和编译。这家伙在编辑器中展示了他是如何玩游戏的,并修改了代码中的一些变量,保存它,并且这些更改立即反映在游戏中。
所以我一直在想......如何实现这一目标?目前我可以想到两种可能的方法:要么是恶作剧,它只是“c 风格”的脚本语言,而不是 C++ 本身,要么是共享库(阅读:DLL)的魔法。
这是我自己尝试的东西(简化):
for(;;)
{
Move DLL from build directory to execution directory
Link to DLL using LoadLibrary() / dlopen() and fetch a pointer to function "foo()" from it
for(;;)
{
Call the function "foo()" found in the dll
Check the source of the dll for changes
If it has changed, attempt to compile
On succesfull compile, break
}
Unload DLL with FreeLibrary() / dlclose()
}
现在这似乎可行,但我不禁想知道还有哪些其他方法?这种方法与使用脚本语言相比如何?