我试图访问变量的副本,而不是变量本身。例如,我想让一个敌人在杀死时放下一定数量的骨头。使用变量的副本而不是引用
Enemy1:删除骨头的1
Enemy2:删除骨头的2
而不是创建此项目的骨头“为每一种敌人的,我想有一个包含所有项目一类,和诸如Enemy1和Enemy2之类的敌人可以使用AllItems.Bones来获得Bones掉落。当我想要更改Enemy2.cs中放置对象的数量变量时,会发生此问题。当我做'drop.quantity = 2'时,Enemy1的掉落数量也变为2。以下是有关我正在使用的代码:
//AllItems.cs
public class AllItems{
public static Item Bones = new Item();
}
//Item.cs
public class Item{
public int quantity = 1;
}
//Enemy1.cs
public class Enemy1{
Item drop;
public Enemy1(){
drop = AllItems.bones;
}
}
//Enemy2.cs
public class Enemy2{
Item drop;
public Enemy2(){
drop = AllItems.bones;
drop.quantity = 2;
}
}
有没有一种方法来设置Enemy1的和Enemy2的Drop到AllItems.Bones和修改他们的下落,而不会影响其他的?
如果有一个简单的解决方案,我的道歉。我一直在寻找很久,但没有成功。我可以给出任何额外的信息,说明我为什么要以某种方式做某事或者如何根据请求设置某些事情。
谢谢。
为什么所有项目中的Bones都是静态的?改变这一点,看看会发生什么,当你使用'static'时,它只共享该项目的一个实例。 – Parid0kht