4

我正在使用 Unity3D 在 C# 中创建游戏,我需要调用我在运行时创建的脚本,所以我知道脚本的名称,因为我有一个名称与它完全相同的对象。

我在运行时创建脚本,然后将其保存到我的 Resources 文件夹中,但随后我更改了场景并需要调用该脚本并将其附加到当前场景中的 Empty GameObject,所以我想使用类似的东西:

Script myScript = Resources.Load(myObject.name) as Script;

但我知道这不能像这样完成,所以我正在寻找一种可以做我想做的事情的方法,因为我需要加载那个新脚本来在运行时添加一些函数。

你知道我的问题有什么解决办法吗?非常感谢!!

4

2 回答 2

7

这实际上比你想象的要容易。您可以使用 AddComponent 方法将脚本添加到游戏对象。所以在你的关卡改变后,你可以抓住你的空游戏对象并执行以下操作:

var gameObject = ... 

gameObject.AddComponent<Script>(); // where Script is the name of your Script's C# class

请参阅http://docs.unity3d.com/Documentation/ScriptReference/GameObject.AddComponent.html

于 2013-01-03T16:20:11.123 回答
-1
    GameObject gameObj = new GameObject();
    Type scriptType = Type.GetType(nameSpace.className);
    if (scriptType == null)
    {
        foreach (Assembly a in AppDomain.CurrentDomain.GetAssemblies())
        {
            var tempType = a.GetType(nameSpace.className);
            if (tempType != null)
            {
                scriptType = tempType;
            }
        }
    }
    gameObj.AddComponent(scriptType);
于 2021-03-08T07:07:55.787 回答