Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 动态水平碎砖机_C#_Unity3d - Fatal编程技术网

C# 动态水平碎砖机

C# 动态水平碎砖机,c#,unity3d,C#,Unity3d,我正在尝试创建一个具有动态加载级别的破砖游戏。我想在整个游戏中停留在一个场景中,然后通过改变砖块位置动态加载不同的关卡(例如,一个关卡的砖块呈圆形,另一个关卡的砖块呈方形,等等) 我把屏幕想象成一个网格,每个单元格要么有砖块,要么没有砖块,然后将它们放置在循环中。我的问题是动态加载数据。现在我有了数组形式的网格数据。我尝试上传了一半json文件,但没有成功 我不知道如何解决这个问题。我是否为每个级别创建单独的json文件?json文件甚至可以有锯齿状数组吗?如何将数据提取为数组?有没有办法用Pl

我正在尝试创建一个具有动态加载级别的破砖游戏。我想在整个游戏中停留在一个场景中,然后通过改变砖块位置动态加载不同的关卡(例如,一个关卡的砖块呈圆形,另一个关卡的砖块呈方形,等等)

我把屏幕想象成一个网格,每个单元格要么有砖块,要么没有砖块,然后将它们放置在循环中。我的问题是动态加载数据。现在我有了数组形式的网格数据。我尝试上传了一半json文件,但没有成功

我不知道如何解决这个问题。我是否为每个级别创建单独的json文件?json文件甚至可以有锯齿状数组吗?如何将数据提取为数组?有没有办法用PlayerRefs来实现这一点

任何帮助都将不胜感激

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”?当“但没有成功”时会发生什么?