我想将一个游戏对象的现有数据存储在一个新的游戏对象中(直到我也想要实例化),然后删除现有的游戏对象,从而得到一个精确的克隆(在场景中未实例化)
因此,我将游戏对象的副本存储在列表中,因为我希望可以随时实例化多个对象。如果我不销毁(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-在场景中创建一个克隆,其中只有我不想要的变换值。
我只想存储现有游戏对象的副本k,然后销毁它,并在将来从列表中实例化存储的副本,例如按按钮或发生什么事情。
答案 0 :(得分:1)
尝试3并跳过第2行:
CloneObj = Instantiate(ExisitingObj);
//CloneObj = ExistingObj; //remove this line
CloneList.Add(CloneObj)
Destory(ExisitingObj);
首先创建实例,然后将对新实例的引用替换为对原始对象的引用,然后将其添加到列表中并销毁它。如果我理解正确,那么您希望保留对新对象的引用,但销毁旧对象,因此不要丢失对新对象的引用