首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Unity3D Rigidbody.MovePosition 找不到方法?類別命名衝突!

     編輯:程式設計疑難解答

新手在 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 等)重複。
  • 檔案名稱(.cs)是否與類別名稱一致。
  • 重新編譯後再試。

這是 Unity 開發中極常見的「命名空間污染」問題,改名即可秒解。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved