从导入的字符串实例化预制件以形成瓦片地图

Instantiating prefabs from an imported string to form a tile map

我正在设计一款游戏,其中一个基础是加载格式如下的文本文件:

11111111111-
00200000001-
10202220101-
10001010101-
11101010101-
10001010101-
11111011101-
10001000101-
10111110101-
10000000000-
11111111111

文件中的每个整数都与游戏中的特定预制件相关。因此,如果整数为 1,则程序将实例化一个 "brick" 预制件,如果整数为 2,则程序将实例化一个 "brokenBrick" 预制件,如果整数为 0,则不会生成任何内容。

到目前为止我有:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;


class Instantiate : MonoBehaviour
{
    public GameObject Brick = null;
    public GameObject brokenBrick = null;
    private string TempLoad;
    private string IDChar;

    void Start()
    {
        int x = 0;
        int y = 0;
        TempLoad = System.IO.File.ReadAllText(@"\Assets\Resources\Worlds\lvl1.txt");
        foreach (char c in TempLoad)
        {
            IDChar = TempLoad[c].ToString();
            if (IDChar == "1")
            {
                Instantiate(Brick, new Vector2(x, y), Quaternion.identity);
                x += 1;
            }
            else if (IDChar == "2")
            {
                Instantiate(brokenBrick, new Vector2(x, y), Quaternion.identity);
                x += 1;

            }
            else if (IDChar == "0")
            {
                x += 1;
            }
            else if(IDChar == "-")
            {
                y += 1;
            }

        }

    }
}

我将其附加到我的游戏对象,并将我的预制件拖到我的游戏对象的实例化脚本中的部分。但是什么也没有产生。我不确定为什么即使程序应该实例化预制件也没有产生任何东西?

确保您的代码进入了条件块。

 if (IDChar == "1")
 {
     Debug.Log("1 detected");
     Instantiate(Brick, new Vector2(x, y), Quaternion.identity);
     x += 1;
 }

此外,使用 string.Equals(string)== 运算符进行值比较,后者是参考比较。

 if (IDChar.Equals("1"))
 {
     Instantiate(Brick, new Vector2(x, y), Quaternion.identity);
     x += 1;
 }