使用 MonoDevelop 4.0.1 为 Unity 4.5.2f1 编写代码
下面的代码是我正在使用的代码的一部分,所有变量都已使用检查Debug.Log
,它们都(单独)返回正确的值。
当我在 Unity 中刷新脚本资产时,我收到以下错误消息:
内部编译器错误。有关更多信息,请参阅控制台日志。输出为:错误 CS0518:未定义或导入预定义类型“System.Runtime.CompilerServices.CallSite”
错误 CS0518:
System.Runtime.CompilerServices.CallSite
未定义或导入预定义类型 1'错误 CS0518:未定义或导入预定义类型“System.Runtime.CompilerServices.CallSite”
错误 CS0518:
System.Runtime.CompilerServices.CallSite
未定义或导入预定义类型 1'错误 CS0518:未定义或导入预定义类型“System.Runtime.CompilerServices.CallSite”
错误 CS0518:
System.Runtime.CompilerServices.CallSite
未定义或导入预定义类型 1'错误 CS0518:未定义或导入预定义类型“System.Runtime.CompilerServices.CallSite”
错误 CS0518:
System.Runtime.CompilerServices.CallSite
未定义或导入预定义类型 1'错误 CS0518:未定义或导入预定义类型“System.Runtime.CompilerServices.CallSite”
错误 CS0518:
System.Runtime.CompilerServices.CallSite
未定义或导入预定义类型 1'错误 CS0518:未定义或导入预定义类型“System.Runtime.CompilerServices.CallSite”
错误 CS0518:
System.Runtime.CompilerServices.CallSite
未定义或导入预定义类型 1'
以下是导致此错误的脚本(简化)部分:
注意:我不能将我的功能分解为多个小功能。我的函数必须保持原样我可以根据需要编辑 return 语句
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};
}
}
我一直无法弄清楚问题是什么,(是的,即使使用谷歌,虽然出现了一些可能的解决方案,但我尝试了它们,它们似乎没有解决我的问题)。
我需要能够将多个变量OnGUI()
从另一个函数返回给函数。我使用的方法是在这里return new{varName = value, ...};
找到的。我不能使用元组,因为 Unity 4 MonoDevelop 不支持它(根据这篇文章),其中用户发布:
不,Unity 不支持元组。也许当 Unity 升级其 Mono 版本以支持 .NET Framework 4 中的功能时。
最终,我想在OnGUI()
函数中实现以下代码:
myFloat = myFunction.myFloat;
myString = myFunction.myString;
myInt = myFunction.myInt
非常感谢您对此的任何帮助,谢谢