在 Unity3D 中将对象复制并移动一定量

Duplicating and moving an object by a certain amount in Unity3D

我想按一定(整数)数量复制一个对象并将其移动 x-0.2(因此第一个为 -0.2,第二个为 -0.4,第三个为 -0.6)。当我尝试这样做时,出现错误“无法修改 'Transform.position' 的 return 值,因为它不是变量”。 我的代码:

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);
    }
}

提前致谢!

在变量中输入 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;
    }
}

您可以使用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-changing-the-x-and-y-values-of-a-gameobject.html