T 為 **類別**(參考型別):回傳該元件在 GameObject 上的**同一實例參考**,修改其欄位會影響原物件。T 為 **結構體**(值型別):回傳**複製品**,修改不影響原元件(但 Unity 內建元件皆為類別)。
public class A : MonoBehaviour { public int i = 3; }
public class B : MonoBehaviour {
A a;
void Start() { a = GetComponent(); }
void Update() {
if (Input.GetKey(KeyCode.A)) {
A a1 = new A(); a1.i = 4; // 新實例,與 a 無關
// 若想修改同一元件:a.i = 4;
}
}
}
GetComponent 回傳的是**既有元件的參考**,非新建物件。若需修改元件狀態,直接操作回傳的參考即可。