【问题标题】:Finding own gameobject (clone) from script从脚本中找到自己的游戏对象(克隆)
【发布时间】:2015-03-05 17:40:22
【问题描述】:

我正在这里编写一段代码,我在其中实例化 x 数量的 GameObject(预制件)的克隆。有几辆汽车随机生成以模拟交通,然后每个克隆都附加一些脚本;一个来控制它的 AI,一个来控制碰撞,我想要第三个来摧毁汽车,当它“越界”或者离游戏太远以至于我们看不到它时。

问题是,我不知道如何访问脚本当前附加到的 GameObject。我设法从 OnCollisionEnter2D 中找到我正在碰撞的任何游戏对象,但我还没有找到找到“我自己”或“自己”的方法。

我知道我连接了一个刚体 2D,因为我可以在不实例化或添加任何组件的情况下控制汽车。

function FixedUpdate () 
{
    // Controls the velocity of the car
    rigidbody2D.angularVelocity = 0;
}

关于如何删除上述游戏对象(包括刚体 2D)并停止/停用所有附加到它的脚本的任何线索?

我想我可以用“Destroy(GameObject)”来销毁游戏对象(以及与之相关的所有东西),只是不确定如何正确设置游戏对象。

编辑:此外,知道用于该 GameObject 实例的预制件的名称将非常有益(不同的预制件使用相同的脚本)。

【问题讨论】:

    标签: unity3d unityscript gameobject


    【解决方案1】:

    好吧,每个脚本都有一个名为“gameObject”的属性,即脚本当前附加到的游戏对象。 所以是的,你的线索是对的,你可以调用 Destroy (gameObject)。 如果脚本附加到对象上,则gameObject属性由Unity设置

    [编辑] 这样做也会破坏附加到对象的所有组件(包括脚本)

    【讨论】:

    • 即使我刚刚添加了 myClone.AddComponent(aiScript);在实例化我的克隆之后?
    • 你是个天才,我也差不多。我有 GameObject(用大写的 G 代替)。我现在觉得很傻>_
    • 哈哈这就是为什么我用“g”写它的原因,我不确定这是你的错字。顺便说一句,为什么在实例化对象后添加 aiScript ?为什么不直接将它添加到预制件中?
    • 我需要基于生成位置的不同脚本,aiScript 只是一个变量(字符串),其中包含该生成点所需的脚本名称。这是一团糟,但它有效:P 我可以通过编写 gameObject.name 找到名称 :)
    • 嗯,这样看来是合法的,而且比为每个 aiScript 创建一个预制要好 ^^ 没关系。很高兴我能以某种方式帮助你
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-04
    • 1970-01-01
    • 1970-01-01
    • 2021-11-20
    • 1970-01-01
    相关资源
    最近更新 更多