Использование MonoDevelop 4.0.1 для кодирования единства 4.5.2f1C# - Unity Internal Compiler Error: "System.Runtime.CompilerServices.CallSite" CS0518 - при использовании динамической переменной
Приведенный ниже код является частью кода, Я использую все переменные, которые были проверены с помощью Debug.Log
, и все они (индивидуально) возвращают правильные значения.
Когда я обновить свой сценарий актив в Unity, я получаю следующее сообщение об ошибке:
Internal compiler error. See the console log for more information. output was:error CS0518: The predefined type `System.Runtime.CompilerServices.CallSite' is not defined or imported
error CS0518: The predefined type
System.Runtime.CompilerServices.CallSite
1' is not defined or importederror CS0518: The predefined type `System.Runtime.CompilerServices.CallSite' is not defined or imported
error CS0518: The predefined type
System.Runtime.CompilerServices.CallSite
1' is not defined or importederror CS0518: The predefined type `System.Runtime.CompilerServices.CallSite' is not defined or imported
error CS0518: The predefined type
System.Runtime.CompilerServices.CallSite
1' is not defined or importederror CS0518: The predefined type `System.Runtime.CompilerServices.CallSite' is not defined or imported
error CS0518: The predefined type
System.Runtime.CompilerServices.CallSite
1' is not defined or importederror CS0518: The predefined type `System.Runtime.CompilerServices.CallSite' is not defined or imported
error CS0518: The predefined type
System.Runtime.CompilerServices.CallSite
1' is not defined or importederror CS0518: The predefined type `System.Runtime.CompilerServices.CallSite' is not defined or imported
error CS0518: The predefined type
System.Runtime.CompilerServices.CallSite
1' is not defined or imported
Здесь находятся участки моего скрипта (упрощенный) вызывает эту ошибку:
Примечания: Я не могу разбить мою функцию на несколько небольших функций. Моя функция должна оставаться как я могу изменить оператор возврата в случае необходимости
using UnityEngine;
using System.Collections;
using Random = UnityEngine.Random;
public class myScene : MonoBehaviour
{
private dynamic someVar;
private float myFloat = 1.1f;
private string myString = "string";
private int myInt = 2;
void OnGUI()
{
someVar = myFunction(myFloat, myString, myInt);
}
//First Function
public dynamic myFunction(float myFloat, string myString, int myInt)
{
//Do something
dynamic myOtherFunction(myFloat, myString, myInt);
float myFloat = myOtherFunction.myFloat;
string myString = myOtherFunction.myString;
int myInt = myOtherFunction.myInt;
//Do something
return new {myFloat = myFloat, myString = myString, myInt = myInt};
}
//Second function
public dynamic myOtherFunction(float myFloat, string myString, int myInt)
{
//Do something
return new {myFloat = myFloat, myString = myString, myInt = myInt};
}
}
Я не мог понять, в чем проблема, (да, даже с помощью Google, хотя некоторые возможные решения пришли я попробовал их, они, похоже, не разрешили мою проблему).
Мне нужно иметь возможность возвращать несколько переменных функции OnGUI()
из другой функции. Метод, который я использую return new{varName = value, ...};
Я нашел here. Я не могу использовать кортежи в Unity 4 MonoDevelop не поддерживает (в соответствии с this поста), где отвечал пользователь:
No, Unity does not support Tuples. Maybe when Unity upgrades its Mono version to support features that came in .NET Framework 4.
В конце концов, я хотел бы реализовать следующий код в функции OnGUI()
:
myFloat = myFunction.myFloat;
myString = myFunction.myString;
myInt = myFunction.myInt
Любая помощь с этим оценивается, Спасибо
Когда вы облегчите пример быть осторожным, чтобы не идти _too_ далеко. Вы повторно используете имена параметров в качестве локальных имен переменных, и он иссушает актуальную проблему. –
Мои извинения, я немного упростил это, спасибо за понимание того, что я делал. Вы оказали огромную помощь – ctwheels
Я получал эту ошибку в своем модульном тестовом проекте и динамически компилировал скрипт C# с помощью CSharpCodeProvider.Добавление ссылки на «System.Core.dll» на CompilerParameters.ReferencedAssemblies решила проблему для меня. – Patel