【问题标题】:Is there any way to use AddComponent with a script in Unity if there is no instance of that script in the game yet?如果游戏中还没有该脚本的实例,是否有任何方法可以在 Unity 中将 AddComponent 与脚本一起使用?
【发布时间】:2017-03-10 18:45:19
【问题描述】:

我需要一种将脚本添加到我刚刚实例化的对象的方法。理想情况下,我可以将脚本设置为添加到检查器中。问题是我不能用

public Component scriptToAdd; 

因为那时我需要已经有一个空对象或带有脚本的东西。虽然这会起作用,但制作一个只存储对某物的引用的空文件感觉有点肮脏或骇人听闻。对我来说这样做的目的也是为了更有效地换出不同的脚本。如果我不得不在一个空的脚本上换掉一个脚本,然后将新的脚本拖进去,我会失去一些我所追求的效率。感谢您的帮助。

【问题讨论】:

    标签: unity3d scripting components unityscript


    【解决方案1】:

    实例化后,你应该使用 GameObject.AddComponent() 类,添加任何你想要的组件类型。

    例如,如果您想在场景中添加相机。

    void Start () {
    
            GameObject myNewCamera = new GameObject();
                //creates an empty game object, you can already attach components to it.
            myNewCamera.AddComponent<Camera>();
                //adds a component of type Camera
    }
    

    你也可以使用重载的构造函数

    GameObject myNewCamera = new GameObject("my object name", typeof(ScriptToAdd));
    GameObject myNewCamera = new GameObject("my object name", typeof(ScriptToAdd), typeof(MoreComponentsToAdd));
    

    此外,您永远不应该害怕在场景中使用空的 GameObject 来保存信息、引用、变量值、保存或其他任何东西。它并不会真正影响您的游戏性能,您只需拥有一个易于查找的标签,例如“引擎”,就可以让您的生活变得轻松。 然后,您只需添加以下内容即可访问任何内容:

            GameObject.FindGameObjectWithTag("Engine");
    

    希望能帮到你:)

    -没有

    【讨论】:

    • 对不起,我来晚了,但我不确定这是否能回答我的问题。我想添加一个我不知道名称的脚本。这就是为什么我需要一个变量来保存目标脚本的名称。也许这可以解决问题?
    猜你喜欢
    • 2020-01-16
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 2019-12-10
    • 1970-01-01
    • 1970-01-01
    • 2014-08-26
    • 2010-12-23
    相关资源
    最近更新 更多