Механизм визуального программирования Unity3D сторонних инструментов - PullRequest
3 голосов
/ 02 октября 2011

Сначала извините за публикацию этого здесь. Я просто не получил ответа на этот вопрос в «Ответах Unity». Я искал такие инструменты, как uScript или Strumpy Shader Редакторы, которые инструменты визуального программирования на основе узлов, такие как Unreal Kismet или 3DsMax система потока частиц. Я изучал, как на самом деле эти инструменты генерируют исходный код в Unity. Поэтому я предполагаю, что во время сборки логики узла код должен генерироваться и компилироваться в DLL (в Unity весь исходный код компилируется в DLL) динамически. начал изучать такие сборки C #, как Reflections, Microsoft.CSharp и System.CodeDom.Compiler; Я даже пытался написать класс C # в Unity с помощью редактора в виде текста, а затем проанализировать и скомпилировать его в DLL с помощью вышеупомянутых инструментов (это было нормально, но DLL существовала только во время выполнения во времени ..) Поэтому я Хотелось бы знать, может ли этот инструмент использовать эти инструменты? Или есть лучший и более чистый способ сделать это? Спасибо.

1 Ответ

3 голосов
/ 04 декабря 2011

Я на самом деле делаю то же самое ... Я думаю, что вы находитесь на правильном пути с классами компилятора.Я не думаю, что вы можете использовать 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());

Надеюсь, это поможет ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...