C# 动态水平碎砖机
我正在尝试创建一个具有动态加载级别的破砖游戏。我想在整个游戏中停留在一个场景中,然后通过改变砖块位置动态加载不同的关卡(例如,一个关卡的砖块呈圆形,另一个关卡的砖块呈方形,等等) 我把屏幕想象成一个网格,每个单元格要么有砖块,要么没有砖块,然后将它们放置在循环中。我的问题是动态加载数据。现在我有了数组形式的网格数据。我尝试上传了一半json文件,但没有成功 我不知道如何解决这个问题。我是否为每个级别创建单独的json文件?json文件甚至可以有锯齿状数组吗?如何将数据提取为数组?有没有办法用PlayerRefs来实现这一点 任何帮助都将不胜感激C# 动态水平碎砖机,c#,unity3d,C#,Unity3d,我正在尝试创建一个具有动态加载级别的破砖游戏。我想在整个游戏中停留在一个场景中,然后通过改变砖块位置动态加载不同的关卡(例如,一个关卡的砖块呈圆形,另一个关卡的砖块呈方形,等等) 我把屏幕想象成一个网格,每个单元格要么有砖块,要么没有砖块,然后将它们放置在循环中。我的问题是动态加载数据。现在我有了数组形式的网格数据。我尝试上传了一半json文件,但没有成功 我不知道如何解决这个问题。我是否为每个级别创建单独的json文件?json文件甚至可以有锯齿状数组吗?如何将数据提取为数组?有没有办法用Pl
public class BrickGrid : MonoBehaviour {
string filename = "data.json";
string jsonString;
string path;
public Transform brickPrefab;
[System.Serializable]
public class Bricks {
public string[] rows;
}
void Start() {
LoadGridData();
InitGrid();
}
void LoadGridData() {
path = Application.streamingAssetsPath + "/" + filename;
if (File.Exists(path)) {
jsonString = File.ReadAllText(path);
BrickPattern rows = JsonUtility.FromJson<BrickPattern>(jsonString);
}
}
void InitGrid() {
int[] row1 = { 0, 0, 1, 1 };
int[] row2 = { 1, 1, 0, 1 };
int[] row3 = { 0, 0, 0, 1 };
int[][] rows = new int[][] {row1, row2, row3};
Vector2 brickPosition = new Vector3(-2.25f, 4f, 0);
for (int i = 0; i < rows.Length; i++) {
int[] individualRow = rows[i];
for (int j = 0; j < individualRow.Length; j++){
if (individualRow[j] == 1){
// instantiate
Instantiate(brickPrefab, brickPosition, Quaternion.identity);
}
else if (individualRow[j] == 0) {
continue;
}
// inrease x position
brickPosition.x = brickPosition.x + 1.5f;
}
// increase y position and reset x position
brickPosition.x = -2.25f;
brickPosition.y = brickPosition.y - 1.5f;
}
}
}
公共类BrickGrid:monobhavior{
字符串filename=“data.json”;
字符串jsonString;
字符串路径;
公共改革;
[系统可序列化]
公共级砖{
公共字符串[]行;
}
void Start(){
LoadGridData();
InitGrid();
}
void LoadGridData(){
path=Application.streamingAssetsPath+“/”+文件名;
if(File.Exists(path)){
jsonString=File.ReadAllText(路径);
BrickPattern rows=JsonUtility.FromJson(jsonString);
}
}
void InitGrid(){
int[]行1={0,0,1,1};
int[]row2={1,1,0,1};
int[]row3={0,0,0,1};
int[][]行=新int[][{row1,row2,row3};
向量2砖位置=新向量3(-2.25f,4f,0);
for(int i=0;i
是的,您可以为每个关卡创建一个预设,只需在一个游戏对象下设计它们,然后从该游戏对象创建一个预设。现在,当您更改级别时,实例化正确的预置。
我认为这是最简单的方法
你也可以尝试很多其他的方法。
硬编码每个层上每个砖的位置,并在“动态”加载新层时使用这些信息。
将位置值存储在其他位置(文件、数据库等)
希望这能有所帮助。如果有一个txt文件,其中每一行都像“1100”、“1100”?当“但没有成功”时会发生什么?