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()
подсказки
Я рекомендую вам следовать этому уроку
И используйте этот шаблон для всех ваших сцен:
Маленькая рекомендация:
Пожалуйста, не используйте верхний регистр при именовании корневой папки ваших сцен, иначе появится сообщение об ошибке. Просто не используйте его, и все будет хорошо:)