繁体   English   中英

通过从Unity中的外部文件读取来创建网格

[英]create grid by reading from external file in Unity

创建网格时,我通常会去

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为空

[(死亡,巨人)(火,地精)] ->两个带有元素和敌人的牢房

[()()()()()()] ->六个空单元格

创建地图时,如何在我的代码中获取文本信息? 也许对于外部文件有更好的语法?

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

这是您的示例在JSON中的样子:

{
    "level": [
        {"row": [{"type": "forest", "monster": "dragon"}, {}]},
        {"row": [{"type": "forest", "monster": "dragon"}, {}, {}, {"type": "frost", "monster": "yeti"}]},
        {"row": [{"type": "death", "monster": "giant"}, {"type": "fire", "monster": "goblin"}]},
        {"row": [{}, {}, {}, {}, {}, {}]}
    ]
 } 

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM