实例化一个新脚本?

时间:2014-03-01 22:21:12

标签: c# unity3d instantiation

我知道这很简单,如果它是GameObject我可以做到,但是如何实例化一个新脚本呢?

Instantiate(FleeScript);

我得到了错误。

3 个答案:

答案 0 :(得分:0)

我没有销毁和实例化新脚本,而是使用GetComponent.enabled = true / false启用和禁用它们。

答案 1 :(得分:0)

public static void AttachScript(GameObject obj, string scriptClassName)
{
    if (obj != null)
        obj.AddComponent(scriptClassName);
}

public static void AttachScript(string gameObjectName, string scriptClassName)
{
    var obj = GameObject.Find(gameObjectName);
    if (obj != null)
        obj.AddComponent(scriptClassName);
}

注意:

  1. 参数“scriptClassName”是类名,而不是“scriptClassName.cs”
  2. 您应该确保脚本类文件存在于项目文件夹或子文件夹中

答案 2 :(得分:0)

请记住:脚本必须位于GameObject中。

因此,要获取新脚本的实例,您可以将其添加到GameObject:

GameObject myGameObject = ...
FleeScript fleeScript = myGameObject.AddComponent<FleeScript>();
// do something with fleeScript

或者你有一个已包含该脚本的预制件并实例化该预制件:

public class MyOtherScript
{
    public FleeScript prefabWithFleeScript; // Linked from the Editor

    void Awake()
    {
        FleeScript fleeScript= Instantiate(prefabWithFleeScript);
        // do something with fleeScript
    }
}