Я пытаюсь скомпилировать код во время выполнения, используя C #, Unity и этот учебник . У меня все работает, но я хочу иметь возможность использовать методы UnityEngine, такие как Debug.Log();
в псевдокоде. Для этого я написал using UnityEngine;
в нем, но получил следующую ошибку:
Не удалось найти имя типа или пространства имен "UnityEngine". Вам не хватает ссылки на сборку?
Как мне решить эту проблему?
Я пытался добавить ссылку на UnityEngine на CompilerParameters.ReferencedAssemblies
, например:
//parameters is of type CompilerParameters
parameters.ReferencedAssemblies.Add("UnityEngine.dll");
но это дает мне следующую ошибку:
Файл метаданных UnityEngine.dll не найден.
Это самая важная часть моего кода, но выне сможет воспроизвести это так. Вместо этого получите код из вышеупомянутого учебника .
public void Compile()
{
string code = @"
using UnityEngine;
namespace First
{
public class Program
{
public static void Main()
{
" + "Debug.Log(\"Test!\");" + @"
}
}
}
";
CSharpCodeProvider provider = new CSharpCodeProvider();
CompilerParameters parameters = new CompilerParameters();
parameters.ReferencedAssemblies.Add("UnityEngine.dll");
}
Поскольку я неопытен в C # и использую его только с Unity, я не знаю, что такое файл .dllесть и не знаю, с чего начать, когда это исправить. Я благодарен за любую помощь!