我想按某個(整數)量復制一個物件并將其移動 x-0.2(所以第一個是-0.2,第二個是-0.4,第三個是-0.6)。當我嘗試這樣做時,我收到錯誤“無法修改'Transform.position'的回傳值,因為它不是變數”。我的代碼:
public GameObject object;
// Start is called before the first frame update
void Awake()
{
GameObject[] clones = null;
for (int i = 0; i < GameManager.singleton.currentLevel; i )
{
clones[i] = GameObject.Instantiate(object);
clones[i].transform.position.y = -0.2 * (i 1);
}
}
提前致謝!
uj5u.com熱心網友回復:
您可以使用 Transform.translate 移動克隆。可以在此處找到相關檔案:https ://docs.unity3d.com/ScriptReference/Space.World.html
您還可以將 transform.position 設定為新的 vector3,如下例所示:https ://docs.unity3d.com/ScriptReference/Transform-position.html
您會收到此錯誤,因為您無法直接設定 transform.position 的 x、y 和 z 值(我相信它們是只讀的)但您可以將 transform.position 設定為新的 vector3
這也可能有助于解釋它:https ://answers.unity.com/questions/656129/c-changeing-the-x-and-y-values-of-a-gameobject.html
uj5u.com熱心網友回復:
在變數中輸入null值不會定義陣列。在這種情況下,您沒有陣列來配置其成員。object它本身也是 C# 中的保留字,不能用作變數名。要解決此問題,請按如下方式更改代碼。
public GameObject obj;
void Awake()
{
var clones = new GameObject[GameManager.singleton.currentLevel];
for (int i = 0; i < clones.Length; i )
{
clones[i] = GameObject.Instantiate(obj);
var pos = clones[i].transform.position;
pos.y = -0.2f * (i 1);
clones[i].transform.position = pos;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/483842.html
