【发布时间】:2018-01-24 14:40:16
【问题描述】:
在创建网格时,我通常会选择
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;
}
但这只是返回给我完整的纯文本。我想用四个不同的行
创建这个示例地图[(forest, dragon)()] -> 两个单元格,第一个是元素和敌人,第二个是空的
[(frost, dragon)()()(frost, Yeti)] -> 四个单元格,2 和 3 是空的
[(death, Giant)(fire, goblin)] -> 两个单元格,元素和敌人
[()()()()()()] -> 六个空单元格
创建地图时如何将文本信息输入到我的代码中?也许外部文件有更好的语法?
【问题讨论】:
-
您应该解析结果字符串 (
content)。请注意,创建自己的格式可能不是一个好主意,因为您必须自己编写解析器。考虑使用已经存在的标记语言,例如 XML(只是一个示例,不一定是最适合您的用例的语言)。 -
你对我有什么建议吗?我想过 JSON 但我不知道
-
我会把它作为答案发布。