新手在 Unity 中撰寫腳本時,發現 Rigidbody.MovePosition 無法呼叫,編輯器報錯「找不到方法」。
腳本類別名稱與 Unity 內建元件同名。例如:
public class Rigidbody : MonoBehaviour { // 錯誤:類別名稱為 Rigidbody
void Start() {
Rigidbody rb = GetComponent<Rigidbody>(); // 取得的是自己這個腳本,非元件
rb.MovePosition(...); // 當然找不到方法
}
}
將自訂類別改名,避免與 Unity 命名空間衝突:
public class PlayerController : MonoBehaviour { // 改為 PlayerController
void Start() {
Rigidbody rb = GetComponent<Rigidbody>(); // 正確取得 Rigidbody 元件
rb.MovePosition(new Vector3(0, 1, 0));
}
}
UnityEngine 內建類別(Rigidbody, Collider, Transform 等)重複。這是 Unity 開發中極常見的「命名空間污染」問題,改名即可秒解。