在 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
我想按一定(整数)数量复制一个对象并将其移动 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