通过读取Unity

时间:2018-01-24 14:40:17

标签: c# unity3d

创建网格时我通常会选择

private Cell[,] mapCells = new Cell[10, 10];

for (int x = 0; x < mapSizeHorizontal; x++)
{
    for (int y = 0; y < mapSizeVertical; y++)
    {
            mapCells[x, y] = new Cell();
    }
}

但我想从外部文本文件中读取地图信息。单元格本身具有此构造函数

public Cell(Celltype type = null, Enemy enemy = null)

我考虑过创建一个文本文件语法来阅读它。

  • []表示新行
  • ()表示连续一个单元格

这是一个示例行

[(火)(霜,地精)()]

  • 第一个细胞将是火型细胞。这个细胞没有敌人 在它上面。
  • 第二个细胞是霜状细胞。这个细胞有一个小妖精 在它上面。
  • 第三个牢房没有类型也没有敌人。

Unity文档提供了TextAsset

https://docs.unity3d.com/Manual/class-TextAsset.html

我尝试以这种方式阅读文件

private void ReadFile(string fileToRead)
{
    TextAsset txt = Resources.Load("Maps/" + fileToRead) as TextAsset;
    string content = txt.text;
}

但这只是给我完整的纯文字。我想用四个不同的行

创建此示例地图

[(森林,龙)()] - &gt;两个单元格,第一个是元素和敌人,第二个是空的

[(霜,龙)()()(霜,雪人)] - &gt;四个单元格,2和3是空的

[(死亡,巨人)(火,地精)] - &gt;两个细胞与元素和敌人

[()()()()()()] - &gt;六个空单元

创建地图时如何将文本信息输入到我的代码中?也许外部文件有更好的语法?

1 个答案:

答案 0 :(得分:3)

您应该解析生成的字符串(table_a)。请注意,创建自己的格式可能是一个坏主意,因为您必须自己编写解析器。考虑使用现有的标记语言,如XML或JSON。

以下是您的示例在JSON中的样子:

content

如果将此JSON存储到字符串中,则可以使用例如Json.NET库从该字符串创建对象。

我个人会使用JSON,但如果您不想使用第三方库,请知道.NET API已经存在与XML相关的类。