Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将游戏对象添加到列表中_C#_Unity3d - Fatal编程技术网

C# 将游戏对象添加到列表中

C# 将游戏对象添加到列表中,c#,unity3d,C#,Unity3d,我在列表中有两个游戏对象,但它们的位置输出总是相同的,为什么?我不想实例化,稍后将实例化。我只想保存游戏对象。我该怎么做呢?位置总是一样的,因为你知道它们是一样的。请参见添加行 myObjects.addCopyPrefact; CopyPrefact.transform.position=新向量22,0; myObjects.addCopyPrefact; 这是同一个对象,因此查看列表的哪个索引并不重要。你不可能同时在两个地方 我不知道你不想实例化是什么意思。你是说第二个预制房吗?如果是这样的

我在列表中有两个游戏对象,但它们的位置输出总是相同的,为什么?我不想实例化,稍后将实例化。我只想保存游戏对象。我该怎么做呢?

位置总是一样的,因为你知道它们是一样的。请参见添加行

myObjects.addCopyPrefact; CopyPrefact.transform.position=新向量22,0; myObjects.addCopyPrefact; 这是同一个对象,因此查看列表的哪个索引并不重要。你不可能同时在两个地方

我不知道你不想实例化是什么意思。你是说第二个预制房吗?如果是这样的话,你不能让这两个都不同。您必须执行以下操作:

copyPrefab=GameObject.InstancePrefab、someTrans、someRot; myObjects.addCopyPrefact; GameObject是一个类,它是一个。因此,当你第二次设置位置时,基本上是指同一个对象。您需要这样的修改:

List<GameObject> myObjects = new List<GameObject>();
public GameObject prefab;
GameObject copyPrefab;
void Start()
{
     copyPrefab = prefab;
     copyPrefab.transform.position = new Vector2(1, 0);
     myObjects.Add(copyPrefab);
     copyPrefab.transform.position = new Vector2(2, 0);
     myObjects.Add(copyPrefab);
     foreach(var item in myObjects)
     {
         Debug.Log(item.transform.position);
     }
}

警告:未经测试的代码

,因为您的copyprefab总是引用完全相同的游戏对象。。如果您使用InstanceEBIT不需要为InstanceEBIT创建方法包装器,那么您永远不会实际复制它;只是尝试为初学者创建最简单的解决方案:最简单的解决方案是简单地使用copypreafa=实例化prefa;CopyPrefact.transform.position=新向量21,0;myObject.AddCopyPrefable;。这不会使用额外的方法使其过于复杂,也不会重用OP的代码,因此更清楚需要更改的内容。然后。。事实上,这已经在中国完成了;
void Start()
{
     myObjects.Add(Spawner(prefab,new Vector2(1, 0)));
     myObjects.Add(Spawner(prefab,new Vector2(2, 0)));
     foreach(var item in myObjects)
     {
         Debug.Log(item.transform.position);
     }
}

GameObject Spawner(GameObject prefab, Vector3 pos){
return GameObject.Instantiate(prefab, pos, Quaternion.identity;);

}