【发布时间】:2014-02-20 23:48:40
【问题描述】:
我有以下代码。
GameObject target;
dynamic script;
script = target.GetComponent("ScriptName");
script.changeState();
虽然我正在使用 unity3d 工具进行游戏开发,但我觉得这更多地涉及到一个通用的 c# 问题。在代码中,我正在获取一个对象,该对象是链接到另一个游戏对象的脚本。我的目标是调用属于“目标”的脚本的 changeState() 函数。这会产生错误,因为它无法确定 changeState() 是否属于动态变量“脚本”。是否有任何选项可以关闭它(类似于#define pragma strict)?还有其他解决方法吗?
注意:附加到该脚本引用的 GameObject 的脚本具有 changeState() 函数的实现。
【问题讨论】:
-
可以添加完整的错误文本吗?
-
@GuruStron 内部编译器错误。有关更多信息,请参阅控制台日志。输出为:错误 CS0518:未定义或导入预定义类型“System.Runtime.CompilerServices.CallSite”
-
这是编译时错误:Compiler Error CS0518。不会是
script缺少任何方法造成的,因为它在运行时解析 -
@GuruStron 我删除了我提到的那段代码,我的程序没有错误。
-
这个问题似乎没用。您使用的 GetComponent 形式表明您使用的是动态的,因为您不知道自己在做什么。你能解释一下为什么这可能不是真的吗?