数组在我尝试添加更多内容时删除其以前的内容,使用C#unity
我最近开始在unity中编写C#来学习。还有很多代码我不懂,数组就是其中之一 我试图编写一个代码,找到对象,对它们进行计数,然后将它们的位置存储在Vector3数组中数组在我尝试添加更多内容时删除其以前的内容,使用C#unity,c#,arrays,unity3d,C#,Arrays,Unity3d,我最近开始在unity中编写C#来学习。还有很多代码我不懂,数组就是其中之一 我试图编写一个代码,找到对象,对它们进行计数,然后将它们的位置存储在Vector3数组中 GameObject[] ExistingObjects = GameObject.FindGameObjectsWithTag("Parts"); float CountObjects = ExistingObjects.Length; for (int i = 0; i < CountObjects; i++) {
GameObject[] ExistingObjects = GameObject.FindGameObjectsWithTag("Parts");
float CountObjects = ExistingObjects.Length;
for (int i = 0; i < CountObjects; i++)
{
float ObjectPositionX = ExistingObjects[i].transform.position.x;
float ObjectPositionZ = ExistingObjects[i].transform.position.z;
Vector3[] ObjectPositions = new[] { new Vector3(ObjectPositionX, 0, ObjectPositionZ) };
}
GameObject[]ExistingObjects=GameObject.FindGameObjectsWithTag(“部件”);
float CountObjects=ExistingObjects.Length;
对于(int i=0;i
当场景中只有一个对象时,一切都正常。当我添加更多时,它会从找到的第一个对象中获取第一个向量3,然后在将第二个向量3放入数组时将其删除。所以我剩下的(不管我在场景中放置了多少对象)就是ObjectPositions[0]
正如我已经说过的,我对C#编码相当陌生。您正在循环中创建一个新变量
ObjectPositions
。您应该在循环外部创建此变量,并且只向循环内部的此变量添加Vector3
这看起来像这样:
Vector3[] ObjectPositions = new Vector3[CountObjects];
for (int i = 0; i < CountObjects; i++)
{
float ObjectPositionX = ExistingObjects[i].transform.position.x;
float ObjectPositionZ = ExistingObjects[i].transform.position.z;
ObjectPositions[i] = new Vector3(ObjectPositionX, 0, ObjectPositionZ);
}
Vector3[]ObjectPositions=新的Vector3[CountObjects];
对于(int i=0;i
您正在循环中创建一个新变量ObjectPositions
。您应该在循环外部创建此变量,并且只向循环内部的此变量添加Vector3
这看起来像这样:
Vector3[] ObjectPositions = new Vector3[CountObjects];
for (int i = 0; i < CountObjects; i++)
{
float ObjectPositionX = ExistingObjects[i].transform.position.x;
float ObjectPositionZ = ExistingObjects[i].transform.position.z;
ObjectPositions[i] = new Vector3(ObjectPositionX, 0, ObjectPositionZ);
}
Vector3[]ObjectPositions=新的Vector3[CountObjects];
对于(int i=0;i
改用泛型
GameObject[] ExistingObjects = GameObject.FindGameObjectsWithTag("Parts");
float CountObjects = ExistingObjects.Length;
List<ObjectPositions> Vector3 = new List<ObjectPositions>();
for (int i = 0; i < CountObjects; i++)
{
float ObjectPositionX = ExistingObjects[i].transform.position.x;
float ObjectPositionZ = ExistingObjects[i].transform.position.z;
Vector3.Add(new Vector3(ObjectPositionX, 0, ObjectPositionZ));
}
GameObject[]ExistingObjects=GameObject.FindGameObjectsWithTag(“部件”);
float CountObjects=ExistingObjects.Length;
列表向量3=新列表();
对于(int i=0;i
改用泛型
GameObject[] ExistingObjects = GameObject.FindGameObjectsWithTag("Parts");
float CountObjects = ExistingObjects.Length;
List<ObjectPositions> Vector3 = new List<ObjectPositions>();
for (int i = 0; i < CountObjects; i++)
{
float ObjectPositionX = ExistingObjects[i].transform.position.x;
float ObjectPositionZ = ExistingObjects[i].transform.position.z;
Vector3.Add(new Vector3(ObjectPositionX, 0, ObjectPositionZ));
}
GameObject[]ExistingObjects=GameObject.FindGameObjectsWithTag(“部件”);
float CountObjects=ExistingObjects.Length;
列表向量3=新列表();
对于(int i=0;i
试试这个:
GameObject[] ExistingObjects = GameObject.FindGameObjectsWithTag("Parts");
Vector3[] ObjectPositions = new Vector3[ExistingObjects.Length]
for(int i = 0; i < ObjectPositions.Length; i++)
{
ObjectPositions[i] = ExistingObjects[i].transform.position;
ObjectPositions[i].y = 0;
}
GameObject[]ExistingObjects=GameObject.FindGameObjectsWithTag(“部件”);
Vector3[]ObjectPositions=新Vector3[ExistingObjects.Length]
for(int i=0;i
试试这个:
GameObject[] ExistingObjects = GameObject.FindGameObjectsWithTag("Parts");
Vector3[] ObjectPositions = new Vector3[ExistingObjects.Length]
for(int i = 0; i < ObjectPositions.Length; i++)
{
ObjectPositions[i] = ExistingObjects[i].transform.position;
ObjectPositions[i].y = 0;
}
GameObject[]ExistingObjects=GameObject.FindGameObjectsWithTag(“部件”);
Vector3[]ObjectPositions=新Vector3[ExistingObjects.Length]
for(int i=0;i
使用ArrayList或泛型,而不是应该在for循环之外声明ObjectPositions。然后,在其中添加每个元素。实际上,您在每次迭代时都要声明它,每次都会覆盖它。请使用ArrayList或泛型,而不是在for循环之外声明ObjectPositions。然后,在其中添加每个元素。实际上,您在每次迭代时都要声明它,每次都会覆盖它。@NitroFray如果这样做有效,您介意将此解决方案标记为答案吗?@NitroFray如果这样做有效,您介意将此解决方案标记为答案吗?