统一内生成的图块地图

时间:2018-11-14 13:58:02

标签: c# visual-studio unity3d

我正在设计一个统一的游戏,它将允许我使用文本文件来存储与世界上某个特定图块相关的数字字符串。 该文件应显示如下:

    114122-
    100002-
    071092-
    111111

每个数字都应在游戏世界中生成某个特定的图块,并且“-”将分割文件,使图块应位于先前生成的图块下方。
到目前为止,我只研究了通过伪代码生成代码,而在统一脚本引擎中进行此操作的大多数尝试均以失败告终。 这就是我的伪代码:

METHOD BuildWorld(tilemap)
        FOR item in tilemap THEN
            FOR character in item THEN
                SWITCH (character)
                    CASE "0"
                    SPAWN an empty space
                    END CASE

                    CASE "1" 
                    SPAWN a brick tile
                    END CASE

                    CASE "2"
                    SPAWN a broken brick tile
                    END CASE

                    CASE "3"
                    SPAWN a brick with a red door
                    END CASE

                    CASE "5"
                    SPAWN a brick with a blue door
                    END CASE

                    CASE "6"
                    SPAWN a brick with a green door
                    END CASE

                    CASE "7"
                    SPAWN red key
                    END CASE

                    CASE "8"
                    SPAWN blue key
                    END CASE

                    CASE "9"
                    SPAWN green key
                    END CASE

                    CASE "*"
                    SET WorldSpawnLocation[0] = character // x value
                    SET WorldSpawnLocation[1] = item // y value
                END SWITCH 
            END FOR
        END FOR

我不确定如何进行此操作,我们将为您提供帮助。

很抱歉,如果我的伪代码未以最佳方式列出

1 个答案:

答案 0 :(得分:3)

1)如何加载瓷砖调色板

假设您希望将这些拼贴调色板轻松添加到最终版本中并在运行时加载它们,则需要将它们放在资源文件夹中(资产/资源/YourTilePalettes/Palette1.txt)

2)如何实例化磁贴

然后,您需要在代码中的某个位置读取该调色板,无论您决定在何处创建磁贴,以及要使用的调色板。 解析文本文件以“-”字符分隔行... 然后实例化预定义的图块结构,无论是UI图像,还是3D世界中的四边形,还是2D或3D世界中的子画面...

3)如何表示瓷砖调色板

我建议您将JSON用作调色板,而不是这种文本格式,如下所示:

{
    "paletteLines" :
    [
        "paletteColumns" :
        [
            "emptySpace",
            "brokenBrick",
            "redDoorBrick",
            ... etc
        ],
        ... etc
    ]
}

然后,您可以拥有一个相应的模型类,并将相应的属性名称反序列化到儿子中,并且还可以使用枚举反序列化解析器。

4)如果您做作业并从某个地方开始,愿意为您提供更多帮助

从字面上看,您的伪代码告诉我们的唯一一件事就是您希望如何在语义和句法上表示拼贴。

目前,您的问题非常笼统:“如何执行此操作,可能要执行哪些步骤”,以及“即使不知道我会选择使用的哪一组步骤,也可能会使用哪些步骤?执行集合中的每个步骤”。这将成倍增加一个良好答案的内容。您的问题应该简洁。

以句法方式表示瓦片调色板的方式,将其加载到应用程序中的方法,在3D世界中实例化瓦片的方法,

这三者中的每一个都有许多可能的实现方式。