Unity3D可视化编程第三方工具背后的机制



首先抱歉在这里发布这篇文章。我一直在寻找像uScript或Strumpy Shader editor这样的工具,这些工具是基于节点的可视化编程工具,如Unreal Kismet或3DsMax粒子流系统。我一直在研究这些工具是如何在Unity中生成源代码的。所以我假设在节点逻辑组装期间,代码应该被动态地生成并编译成dll(在Unity中,所有源代码都被编译成dll)。我开始研究像Reflections, Microsoft这样的c#程序集。CSharp和System.CodeDom.Compiler;我甚至试图通过编辑器在Unity中编写一个c#类作为文本,然后使用上述工具解析并将其编译为DLL(这是可以的,但DLL仅存在于临时运行期间)。因此,我想知道这是这些工具可能使用的方法吗?或者有更好更干净的方法呢?谢谢。

我实际上是在做同样的事情的过程中。我认为你是在正确的道路上与编译器类。我不认为你可以在移动设备上发射IL作为安全沙箱问题,但我正在动态创建c#代码并将其编译成像这样的持久dll ..

CompilerParameters compilerParameter = new CompilerParameters();
compilerParameter.OutputAssembly = "/Your/Path/Here.dll";
CodeDomProvider codeDomProvider = CodeDomProvider.CreateProvider("CSharp");
StringBuilder code = new StringBuilder();
code.AppendLine("public static class Test {");
//More code here...
code.AppendLine("}");
var compilerResult = codeDomProvider.CompileAssemblyFromSource(compilerParameter, code.ToString());

最新更新