【问题标题】:Can't use saved information to load into an array无法使用保存的信息加载到数组中
【发布时间】:2020-11-25 03:09:01
【问题描述】:

我已经设法将一些信息保存到一个文件中。我希望能够读取该信息并使用它来创建项目

public void Save()
{            
   StreamWriter writer;
   writer = new StreamWriter("PlayerInventory.txt");
   for (int i = 0; i < playerInventory.Length; i++)
   {
      if (playerInventory[i] != null)
      {
         if (playerInventory[i] is Sheild sheild)
         {
            writer.WriteLine("Sheild:" + sheild.Defence + "," + sheild.name + "," + sheild.description + "," + sheild.cost);
         }
      }     
   }
   else
   {}
}

我开始使用此代码来加载它,但我不知道如何完成代码。现在它的分裂,但我不知道如何将它分配给任何东西。

例如 sheild:20,Shield,this is a shield,100

现在分为

  1. 20,
  2. 盾牌,
  3. 这是一个盾牌,
  4. 100

但我不知道将这些东西分配给谁的数组

public void Load()
{
   StreamReader reader;
   reader = new StreamReader("PlayerInventory.txt");
   string line;
   string[] currentLineData;

   while (true)
   {
      try
      {
         line = reader.ReadLine();
         if (line == null)
         {
            break;
         }
         if (line.Contains("Sheild"))
         {
            line.Replace("Sheild:", "");
            currentLineData = line.Split(',');
         }
      } 
      catch
      {
         break;
      }
}
reader.Close();}

【问题讨论】:

  • 嗨,有趣的是,可能有异常或错误吗?
  • 可能是错字——“sheild”与“shield”...
  • 它更多的是我不知道使用什么代码来获取信息将信息放入一个数组中并感谢拼写错误:)
  • 您需要创建一个数组或盾牌列表。在循环中创建 Shield 类的对象。从文件中为其属性赋值。将该对象添加到列表中。你就是这样做的。
  • 您似乎想要一个您正在创建的所有数组的列表,例如List&lt;string[]&gt;。创建它的实例后,您可以添加:list.Add(currentLineData);。

标签: c# arrays file split save


【解决方案1】:

看起来你正在设计一款游戏。

如果我要设置一个包含带有统计信息的盾牌的库存,我会考虑创建一个复杂的数据类型,对库存项目使用“结构”。

然后我会创建一个库存结构项目数组,每个库存槽都有一个 - 在加载我的文件之前。

这可以包含您需要的所有不同信息,这些信息可以存储在库存中的任何物品,例如物品名称、防御强度、攻击强度等。

然后,当您加载文件时,所有正确的东西都会放在名称好听的地方,以便您以后轻松找到它们。

如果您需要额外的统计信息,请在您的结构定义中添加一行,然后在您的文件中添加一列,然后就可以开始了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-06
    • 2020-01-30
    相关资源
    最近更新 更多