c# - 将游戏对象添加到列表
问题描述
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);
}
}
我在列表中有两个游戏对象,但它们的位置输出始终相同,为什么?我不想实例化,我稍后会实例化。我只想保存游戏对象。我怎样才能做到这一点?
解决方案
位置总是一样的,因为你是一样的。查看添加行
myObjects.Add(copyPrefab);
copyPrefab.transform.position = new Vector2(2, 0);
myObjects.Add(copyPrefab);
这是同一个对象,因此您查看列表的哪个索引并不重要。你不能同时在两个地方。
我不知道你不想实例化是什么意思。你的意思是第二个预制件?如果是这样,你不能让这两者都不同。你必须这样做:
copyPrefab = GameObject.Instantiate(prefab, someTrans, someRot);
myObjects.Add(copyPrefab);
推荐阅读
- php - 如何在 PHP 中检索错误的 cURL 响应
- flutter - ChangeNotifierProxyProvider 参数“create”中预期的 2 个位置参数
- java - 如何在不重复列表成员的情况下获得从 1 到 10 的 10 个数字的随机列表
- python - 使用graphviz在Python中生成PDF文件时出错
- python - 在 Windows 上使用 spark-submit 时“找不到 Python 但可以安装”
- python - 在python中生成幂律度分布
- jenkins - 无法使用 Jenkins 共享库在 groovy 中运行执行程序服务
- android - 设计一个圆形按钮,周围有垂直线
- typescript - 为什么使用 Record 类型注释此对象会删除 Intellisense?
- laravel - Laravel Excel 导出