Я разрабатываю игру в единстве, которая позволит мне использовать текстовые файлы для хранения строки чисел, относящихся к определенной плитке в мире. Файл должен выглядеть следующим образом:

    114122-
    100002-
    071092-
    111111

Каждое число должно порождать определенную плитку в игровом мире, а знак «-» разделяет файл, где плитки должны располагаться ниже ранее созданных плиток.
До сих пор я рассматривал возможность создания этого только с помощью псевдокода, и в большинстве попыток сделать это в механизме создания сценариев Unity потерпел неудачу. Это то, что у меня есть в моем псевдокоде:

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

Я не знаю, как это сделать, и приветствую любую помощь.

Извините, если мой псевдокод изложен не лучшим образом

0
Roodolpha 14 Ноя 2018 в 16:58

1 ответ

Лучший ответ

1) как загрузить палитры плитки

Предполагая, что вы хотите, чтобы эти палитры плиток были легко добавлены в вашу окончательную сборку и загружены во время выполнения, вам необходимо поместить их в папку ресурсов (Assets / Resources / YourTilePalettes / Palette1.txt)

2) как создать экземпляры плиток

Затем вам нужно будет прочитать эту палитру в каком-то месте вашего кода, где бы вы ни решили создавать плитки, и какую палитру использовать для этого. Разбор вашего текстового файла на разделение строк символом «-» ... А затем создайте экземпляр вашей предопределенной структуры плитки, будь то изображение пользовательского интерфейса, четырехугольник в трехмерном мире или спрайт в двухмерном или трехмерном мире ...

3) как представлять палитру плитки

Я бы посоветовал вам использовать JSON для ваших палитр вместо этого текстового формата, который будет выглядеть так:

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

А затем у вас может быть соответствующий класс модели, в который вы десериализуете своего сына, с соответствующими именами атрибутов, и вы также можете использовать парсер десериализации enum.

4) Готовы помочь вам больше, если вы сделаете домашнее задание и с чего-то начнете

Буквально единственное, что сообщает нам ваш псевдокод, - это то, как вы хотите семантически и синтаксически представлять палитры тайлов.

На данный момент ваш вопрос очень общий: «как подойти к этому, каковы возможные наборы шагов» и «не зная даже одного набора шагов, который я когда-либо выбрал бы использовать, каковы были бы возможные способы выполнения каждого шага. в комплекте ». Это экспоненциально увеличивает содержание хорошего ответа. Ваш вопрос должен быть лаконичным.

Способы синтаксического представления палитр плиток, способы их загрузки в приложение, способы создания экземпляров плиток в трехмерном мире,

У каждого из этих трех есть много возможных способов сделать это.

3
Daveloper 14 Ноя 2018 в 15:02