【发布时间】:2019-10-21 07:49:36
【问题描述】:
所以基本上我想以几个游戏对象结束,每个对象都有几个具有单一行为的 .cs 脚本。 (每个对象上的不同脚本集)
各式各样的角色
每个角色的脚本会随时间变化
角色学习新技能/抛弃旧技能
所以当游戏开始时,我想在运行时动态地将脚本附加到对象上
基于技能树中的玩家决策
有什么方法可以在不使用反射的情况下做到这一点?
编辑:我似乎找到了如何让它在没有反射的情况下工作的解决方案
public class TestSkill : MonoBehaviour {}
public class TestFireball : TestSkill {}
public class TestMeleeAttack : TestSkill {}
public class TestSkillBook : MonoBehaviour {
public MonoScript script;
void Start () {
System.Type t = script.GetClass();
TestSkill skill = gameObject.AddComponent(t) as TestSkill;
}
}
【问题讨论】:
-
我很难理解您的问题。您能否尝试更清楚地重写它? (粗体和斜体目前也无助于使任何内容更清晰。)
-
问题在我这边,我不太擅长解释:) 基本上,我想将脚本动态附加到对象,但我事先不知道我会附加哪些脚本。
-
你现在明白还是我应该澄清更多?
-
恐怕不是。用代码给出一个具体的例子会有很大帮助。
-
我的代码有数千行。但我会从不同的角度尝试。我知道如何使用游戏对象变量创建一个类,将其放在预制件上,在统一编辑器中填充变量,然后将其传递给另一个脚本运行时。我想对脚本类型做同样的事情。