【发布时间】:2013-07-31 11:50:47
【问题描述】:
Type thistype = stringVar.GetType();
thistype myScript = gameObject.AddComponent(stringVar);
myScript.runCustomFunction();
这不起作用,我相信这是因为如果我在编译时(而不是运行)不知道变量类型,我无法转换为变量类型,因此我无法直接访问我的组件刚刚添加。
我有一个 gameItem 类,它从另一个脚本中提取其默认值,然后将它们放入字典中。基于字典条目“functionScript”,“myScript”,我需要将 myScript 附加到对象,然后传递一些字典条目。
另外,我可能真的效率低下,并在 myScript 类上向 item 类询问其变量,我宁愿避免这样做。
【问题讨论】:
-
好的,所以我无法准确地理解您要完成的工作。
stringVar的值类似于"myScript"并且您需要能够根据名称提取适当的具体类型? -
字符串 stringVar 等于“myScript”(或任何其他脚本名称,取决于默认项值设置传递的字符串)。我需要使用该字符串添加一个名为 myScript 的组件脚本(或任何其他名称,无论传递什么),然后运行一个函数/将一些变量传递给新添加的组件。
-
但是该值是否对应于具体类型?您显然对此有所了解,否则您不会尝试致电
runCustomFunction。您的所有类型都继承自同一个底层基类吗?还是实现一个接口? -
感谢您的快速回复! - 我将尝试澄清我正在尝试做的事情:我有一个 gameItem 类,它存储各种变量(项目类型、伤害、冷却时间等)。如果手动覆盖关闭,我会运行一个函数来设置 gameItem 类的所有默认值(从字典中提取)。一个变量是一个名为 gameItemScript 的字符串。调用 AddWeaponScript(string gameItemScript) 方法时,需要添加名为 gameItemScript 的组件,然后在该组件上设置一些变量。
标签: c# dynamic unity3d unity-components