首先遗憾的是,我在“统一答案”中对此问题没有任何答案.我一直在研究诸如uScript或Strumpy Shader编辑器之类的工具,这些工具是基于节点的可视化编程工具,例如Unreal Kismet或3DsMax粒子流系统.我一直在研究这些工具实际上是如何在Unity中生成源代码的,因此我假设在节点逻辑组装期间应动态生成代码并将其编译为DLL(在Unity中所有源代码均被动态编译为DLL).开始研究诸如Reflections,Microsoft.CSharp和System.CodeDom.Compiler之类的C#程序集;我什至尝试通过编辑器在Unity中编写C#类作为文本,然后使用上述工具解析并将其编译为DLL(可以,但是DLL仅在运行时处于临时状态.)因此,我想知道这些工具可能使用的方法吗?还是有更好,更清洁的方法来完成此工作?谢谢.
解决方法:
我实际上正在做同一件事..我认为您在使用Compiler类的正确路径上.我不认为您可以在移动设备上即时发出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());
希望这可以帮助..
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。