创建网格时我通常会选择
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;六个空单元
创建地图时如何将文本信息输入到我的代码中?也许外部文件有更好的语法?
答案 0 :(得分:3)
您应该解析生成的字符串(table_a
)。请注意,创建自己的格式可能是一个坏主意,因为您必须自己编写解析器。考虑使用现有的标记语言,如XML或JSON。
以下是您的示例在JSON中的样子:
content
如果将此JSON存储到字符串中,则可以使用例如Json.NET库从该字符串创建对象。
我个人会使用JSON,但如果您不想使用第三方库,请知道.NET API已经存在与XML相关的类。