【问题标题】:Accessing components from game object in unity统一从游戏对象访问组件
【发布时间】:2020-09-11 05:13:26
【问题描述】:

目前我正在学习Unity,有点困惑。当我的导师想要访问另一个类的方法时(比如一个敌人想要在碰撞时访问玩家方法),他写了这样的东西:other.transform.GetComponents<Player>().Damage();

我的问题是:

  1. 他为什么要使用other.transform,他不能只使用 other.GetComponents<Player>().Damage();

  2. Transform 和 GameObject 有什么区别?

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

    只要other是一个GameObject,你是对的,这两个函数调用本质上是等价的。

    GameObject 是表示 Unity 世界中存在的事物的基础实体。所有游戏对象都有一个变换。 GameObjects 还可以通过其他组件(例如自定义脚本、渲染器、网格、碰撞器等)拥有与之关联的其他数据和行为。

    变换是一种特殊类型的组件,它描述了游戏对象在世界中的位置、旋转、缩放,并提供了操作这些信息的方法。

    可能由于遗留原因(此时 Unity 已经存在了十多年),Transform 类上仍有一些函数作用于其所有者 GameObject,例如您的示例中的 GetComponents

    p>

    【讨论】:

    • 我对第二个问题的想法是什么,但我曾经看到他创建了一个这样的实例Transform name;,那么GameObject name;Transform name; 之间的区别是什么
    • 酷。如果您想接受和/或支持答案,我们将不胜感激。
    猜你喜欢
    • 2011-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-23
    相关资源
    最近更新 更多