【发布时间】:2019-11-25 08:23:03
【问题描述】:
我想将一个游戏对象的现有数据存储在一个新的游戏对象中(直到我也想实例化它),然后删除现有的游戏对象,从而给我一个精确的克隆(在场景中没有实例化)
所以我将游戏对象的副本存储在一个列表中,因为我想要多个可以随时实例化的对象。如果我不销毁(ExisitngGameObject),则会制作一个副本,但是当我销毁现有游戏对象时,所谓复制的游戏对象将在列表中丢失对象
`//#1
GameObject CloneObj;
CloneObj = ExistingObj;
CloneList.Add(CloneObj)
Destory(ExisitingObj);`
//2
GameObject CloneObj = new gameobject();
CloneObj = ExistingObj;
CloneList.Add(CloneObj)
Destory(ExisitingObj);`
//#3
CloneObj = Instantiate(ExisitingObj);
CloneObj = ExistingObj;
CloneList.Add(CloneObj)
Destory(ExisitingObj);`
//#4
GameObject CloneObj= new GameObject();
CloneObj.name = ExisitingObj.name;
CloneObj.transform.position =ExisitingObj.transform.position;
CloneObj.transform.rotation = ExisitingObj.transform.rotation;
CloneObj.transform.localScale = ExisitingObj.transform.localScale;
CloneObj = ExistingObj;
CloneList.Add(CloneObj)
Destory(ExisitingObj);
`
结果:
1 - 销毁现有对象时列表中缺少对象
2 - 在场景中创建一个空的游戏对象
3 - 在场景中创建一个我不想要的非活动游戏对象克隆
4 - 在场景中创建一个只有我不想要的变换值的克隆。
我只想存储现有游戏对象的副本并销毁它,并在将来从列表中实例化存储的副本,例如按下按钮或发生某些事情。
【问题讨论】:
标签: c# unity3d clone gameobject