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

Unity C# 為何無法直接修改 transform.position.x?

     編輯:程式設計綜合問答

現象

嘗試 transform.position.x = 7.0f; 會報錯,提示無法修改傳回值的成員。

原因

transform.position 是屬性,其 getter 回傳 Vector3 結構體的**副本**。修改副本的 x 不會影響原始位置,編譯器為避免無效操作而禁止。

正確做法

Vector3 pos = transform.position;
pos.x = 7.0f;
transform.position = pos;

或使用 transform.Translate、transform.SetPositionAndRotation 等 API。

對比:UnityScript(JS)行為

UnityScript 編譯器會自動將 transform.position.x = 7 展開為上述三步驟,因此看似可直接修改。

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