简而言之,如何使用Mono为游戏实现脚本?
您是想将所有脚本编译到程序集中,然后加载它并从这个程序集运行脚本。如果是这样,在运行编译之后如何切换程序集。
我目前有一个加载并在Engine的init阶段运行的程序集。它打开一个程序集,它编译“Scripts /”目录中的所有脚本。然后将它们全部编译成一个名为“Scripts.dll”的新程序集。我的问题是如何访问这个新程序集,并能够从引擎调用init / update / render函数。
目前,我这样做:
bool ScriptingEngine::Init()
{
std::cout << " " << std::endl;
mono_set_dirs(PathUtil::GetLibDirectory().c_str(), PathUtil::GetConfigDirectory().c_str());
domain = mono_jit_init ("System");
assembly = mono_domain_assembly_open (domain, "../build/Resources/Scripts/2.0/ScriptLoader.exe");
if (!assembly)
{
std::cout << "SCRIPTING FAILED" << std::endl;
return false;
}
image = mono_assembly_get_image(assembly);
mono_jit_exec(domain, assembly, argc, argv);
ScriptingClass class1 = scripting_createClass("ScriptManager", "ScriptLoader");
scripting_call(class1, "LoadScripts");
std::cout << " " << std::endl;
return true;
}
现在,要访问这个新程序集。我该怎么做?我没有看到在Mono的文档或支持中加载多个程序集。我需要加载程序集,并能够从任何脚本调用函数。这甚至是正确的方法吗?