1

我正在制作一个(非常基本的)游戏。因此我需要为(很多)实体存储数据。

所以我想出了这个概念:

String[] Entity_Data = new String[EntityCount];
Entity_Data[0] = "1 12 98 45";//Or other numbers... 

第一个数字可能是饥饿状态或步行速度,甚至是 X 或 Y 坐标。

有没有办法给数组中的每个变量多个值?

4

4 回答 4

8

对于如何在单个变量中存储多个值的基本问题,请使用ListDictionaryTuple之类的东西:

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);

也就是说,你做错了。创建一个并使用完全限定的属性/属性。像这样:

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仔细阅读/提问。

于 2013-08-03T19:48:48.447 回答
2

您可以使用锯齿状数组,如下所示:

string[][] jaggedArray = new string[3][];

jaggedArray[0] = new string[5];
jaggedArray[1] = new string[4];
jaggedArray[2] = new string[2]
于 2013-08-03T19:50:40.420 回答
2

除了我喜欢你对“坐标”的时髦拼写这一事实之外,你是否知道一个潜在的解决方案就在你眼前徘徊,等待被发现?

什么是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" };

我并不是说这是最好的解决方案,但我认为无论如何都值得向您指出。

于 2013-08-03T19:52:11.333 回答
2

您应该更改为面向对象的概念会很好。您可以将任何类型的变量存储为类中的属性。如果你想获取一些属性数据,你应该创建属性来获取或设置属性。

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.Nameor player.Name = "Hero";

在http://www.dotnetperls.com/property上查看更多信息。

于 2013-08-03T21:10:07.770 回答