Corona SDK: структура сцены

Я искал много часов и до сих пор не понял.
Вот моя проблема, я сделал крошечную игру, которая работает, но теперь мне нужно меню, экран рекордов и так далее. Это означает, что моя игра полностью сделана без использования раскадровок / сцен.

Это моя структура:

Вступление
Я положил туда все, что нужно для начала, например, функцию физики.

переменные
Там у меня есть все мои переменные, такие как:

local object = 0 <or>
local object = display.newObject(param)

функции
Я положил туда все свои функции, такие как:

local function functionName (event)
end


Слушатели событий
Там у меня есть каждый слушатель событий, таких как:

functionName:addEventListener("eventType", functionName)


Так что это все, что у меня есть, что я обнаружил в своих исследованиях, так это то, что мне нужны некоторые функции для создания моей сцены, входа в мою сцену, выхода из моей сцены и разрушения моей сцены. Проблема в том, что я не знаю, куда поместить эти сцены и куда поместить остальную часть моего кода. В основном то, что мне нужно, это:

  • Меню с кнопкой воспроизведения и кнопкой рекордов.
  • при нажатии на мою кнопку воспроизведения он переходит на мою игровую сцену (это всегда одна и та же игра, она не содержит какого-либо уровня или около того), если проигрывает, а затем переходит на другую сцену, которая выглядит как, перезапустить или перейти в меню.
  • при нажатии на кнопку рекордов он покажет лучшие результаты.

А что если создавать объекты в моих функциях? Будет ли это беспокоить сцену? А как насчет партитуры, она мне нужна при переключении сцен на рекорд и так далее, есть ли способ не делать партитуру не только местной, но и публичной?

Надеюсь, я достаточно ясно и вы поймете, что мне нужно!:) В качестве примера структуры, есть игра под названием "Doodle Jump", и моя структура игры должна выглядеть примерно так же.

2 ответа

Решение

Часть создания хорошего кода зависит от того, как вы решили организовать и отформатировать его.

Это то, что я люблю делать:

у меня есть main.lua файл + а scenes каталог со всеми моими сценами внутри. Я использую файл lua для каждой сцены.

-> ProjectName/
     - main.lua
     -> scenes/
        - mainMenu.lua
        - highScores.lua
        - game.lua
        - pauseMenu.lua
        - etc ...

main.lua

Внутри main.lua я настроил игру и все настройки. После настройки я вызываю сцену mainMenu для отображения.

local composer = require("composer")

-- Setup game here:
composer.mySettings = "Some settings that can be accessed in any scene (highscores, volume settings, etc)"
composer.myVolume = 100


-- Use composer to go to our first game scene
composer.goToScene("scenes.mainMenu")

сцены /someScene.lua

Сцены реагируют на события в короне. Эти события:

scene:create()
scene:show()
scene:hide()
scene:destroy()

подсказки

Я рекомендую вам следовать этому уроку

И используйте этот шаблон для всех ваших сцен:

Маленькая рекомендация:

Пожалуйста, не используйте верхний регистр при именовании корневой папки ваших сцен, иначе появится сообщение об ошибке. Просто не используйте его, и все будет хорошо:)

Другие вопросы по тегам