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

时间:2018-11-27 20:49:04

标签: c# unity3d instantiation

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

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

文件中的每个整数都将与游戏中的特定预制件相关。因此,如果整数为1,则程序将实例化“砖”预制件;如果整数为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;
            }

        }

    }
}

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

1 个答案:

答案 0 :(得分:0)

确保您的代码正在输入条件块。

 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;
 }