C# 获取刚体的引用

C# 获取刚体的引用,c#,unity3d,C#,Unity3d,我试图理解为什么我看到不同的程序员以两种不同的方式获得对刚体的引用 我看到的一个方法是: public class PlayerController : MonoBehaviour { Rigidboody rb; //then in the start or awake function do: void Awake() { rb = Getcomponet<Rigidbody>(); } } 然后将刚体组件拖动到inspector中

我试图理解为什么我看到不同的程序员以两种不同的方式获得对
刚体的引用

我看到的一个方法是:

public class PlayerController : MonoBehaviour {
    Rigidboody rb;

    //then in the start or awake function do:
    void Awake() {
      rb = Getcomponet<Rigidbody>();
    }
}
然后将
刚体
组件拖动到inspector中的
序列化字段


我知道这两种方法都有效,但是它们之间有什么区别呢?

一般来说,使用
Getcomponet()当您对组件T有硬依赖时(例如,通过在脚本中使用属性
[RequireComponent(typeof(T))]
),或者当您的脚本可以公平地假设游戏对象中将存在适当的引用时,无需手动在编辑器中拖动实例


当脚本所依赖的组件比其游戏对象的其他脚本更特定/有用时,或者当游戏对象可能有该组件的多个实例,并且您将通过在编辑器中拖动来指定其中一个实例时,请使用公共属性。

作为一般规则,请使用
Getcomponet()当您对组件T有硬依赖时(例如,通过在脚本中使用属性
[RequireComponent(typeof(T))]
),或者当您的脚本可以公平地假设游戏对象中将存在适当的引用时,无需手动在编辑器中拖动实例


当您的脚本所依赖的组件比其游戏对象的其他脚本更特定/有用时,或者当您的游戏对象可能有该组件的多个实例,并且您将通过在编辑器中拖动来指定哪个实例时,请使用公共属性。

性能没有明显差异。如果刚体组件与脚本位于同一游戏对象上,请使用第一种方法,因为这将使其更加多样化。如果刚体组件位于不同的游戏对象上(出于某种原因),请使用第二种方法。这将消除查找操作的需要。

性能上没有明显差异。如果刚体组件与脚本位于同一游戏对象上,请使用第一种方法,因为这将使其更加多样化。如果刚体组件位于不同的游戏对象上(出于某种原因),请使用第二种方法。这将消除查找操作的需要。

如果组件连接到同一个游戏对象,则在大多数情况下,第一个组件应该没有问题。如果您正在引用其他游戏对象中的组件,则后者可能更常见。即使组件连接到同一个游戏对象,有些组件也可能在代码和拖放之间有偏好。如果组件连接到同一个游戏对象,在大多数情况下,第一个组件应该没有问题。如果您正在引用其他游戏对象中的组件,则后者可能更常见。即使组件连接到同一个游戏对象,有些组件也可能在代码和拖放之间有偏好。
public class PlayerController : MonoBehaviour {
    [SerializeField] Rigidboody rb;

    void Start() {
    }