从导入的字符串实例化预制件以形成瓦片地图
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;
}
我正在设计一款游戏,其中一个基础是加载格式如下的文本文件:
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;
}