我正在做一个(非常基本的)游戏。因此,我需要为(很多)实体存储数据。
所以我提出了这个概念:
String[] Entity_Data = new String[EntityCount];
Entity_Data[0] = "1 12 98 45";//Or other numbers...
第一个数字可能是饥饿状态或步行速度,甚至是X或Y坐标。
有没有办法为数组中的每个变量赋予多个值?
答案 0 :(得分:8)
关于如何在单个变量中存储多个值的基本问题,请使用类似List,Dictionary或Tuple的内容:
List<String> items = new List<String>() {
"one", "two", "three"
};
Dictionary<String, String> items = new Dictionary<String, String>() {
{"name 1", "value 1"},
{"name 2", "value 2"}
{"name 3", "value 3"}
};
var items = new Tuple<string, int, int>("Bad Guy", 100, 50);
那说,你做错了。创建class并使用完全限定的属性/属性。像这样:
public class Enemy {
private Int32 MaxHitPoints;
private Int32 CurrentHitPoints;
private Int32 Strength;
private Int32 Speed;
private List<Weapons>;
public Hit(Int32 power) {
CurrentHitPoints = CurrentHitPoints - power;
if (CurrentHitPoints <= 0) {
Die();
Explode();
MakeAMess();
}
}
}
等。 ......可能值得在game-dev.SE阅读/提问。
答案 1 :(得分:2)
您可以使用锯齿状数组,如下所示:
string[][] jaggedArray = new string[3][];
jaggedArray[0] = new string[5];
jaggedArray[1] = new string[4];
jaggedArray[2] = new string[2]
答案 2 :(得分:2)
除了我喜欢你的“coördinate”的时髦拼写之外,你是否意识到潜在的解决方案正在眼前徘徊,等待被发现?
什么是Entity_Data
,如果不是一个可以容纳多个值的变量?那你在寻找什么?完全一样!意思是,您可以将Entity_Data
声明为string
的数组数组(“锯齿状数组”):
var entityData = new string[3][];
entityData[0] = new string[] { "1", "2", "3" };
entityData[1] = new string[] { "a", "b" };
entityData[2] = new string[] { "I", "II", "III", "IV", "V" };
我并不是说这是最好的解决方案,但无论如何我认为值得指出。
答案 3 :(得分:2)
你应该改为面向对象的概念会很好。您可以将任何类型的变量存储为类中的属性。如果你想获得attribut的一些数据,你应该创建属性来获取或设置属性。
class Player
{
private string _name;
private int _hungerStatus;
private int _walkingSpeed;
private int _Xco;
private int _Yco;
// property
public string Name
{
get
{
return _name;
}
set
{
_name = value;
}
}
…
}
当您想要使用它时,您只需例如X = player.Name
或player.Name = "Hero";
。