В настоящее время я работаю над iOS-проектом под названием Old Frank, который я пытаюсь следовать шаблону проектирования MVC.
Суть этого есть.
GameObjects(model) <- Scene(controller) -> Sprites "SpriteKit" (View)
Теперь, если я правильно понимаю MVC, вы не сможете использовать множество функций, которые может предложить SpriteKit, если вы хотите следовать MVC. Например SKAction
, обнаружение столкновений и т. Д.
Разве это не зависит от модели, в которой расположены игровые объекты, и как они должны реагировать при касании других объектов? Разве это не зависит от модели, чтобы определить местоположение с течением времени?
Существуют ли какие-либо части SpriteKit, которые можно было бы использовать как «представление» в MVC, кроме рендеринга?
ios
objective-c
spritekit
mvc
Скайлер Лорен
источник
источник
Ответы:
Ваш вопрос хороший. У меня был точно такой же вопрос относительно SpriteKit, и я был очень озадачен отсутствием информации в Интернете по этому поводу. SpriteKit, кажется, призывает вас поместить весь код Model-View-Controller в один класс (ваш подкласс SKScene), что меня действительно смущает. Как бы вы создали игру любой сложности, используя эту технику? Сочетание состояния игры (партитура, numLives и т. Д.) С кодом контроллера, например touchesBegan / Ended, и рендеринг вида в одном и том же классе становится действительно трудным для управления, помимо самых простых игр.
Я согласен с тем, что использование паттерна сувениров для помощи с постоянством - хорошая идея, но я также думаю, что переход на дизайн MVC может быть полезным В настоящее время я перевожу свою игру в архитектуру MVC. Мой текущий подход заключается в том, чтобы моя модель (игровые объекты) управляла физическими телами, подкласс SKScene выступал в качестве контроллера, а отдельный класс - в качестве представления для настройки и визуализации визуальных аспектов узлов SKN в сцене. Я только частично прохожу этот процесс, поэтому не могу с уверенностью сказать, будет ли это хороший дизайн, но кажется, что он будет намного лучше, чем иметь подкласс из 10 000 строк в SKScene.
источник
Проще говоря, общий дизайн в играх SpriteKit - сцены, слои, узлы и дочерние узлы.
Вы можете превратить каждую часть в отдельный класс, который инкапсулирует все части, свойства и методы.
Например, класс Background, который имеет слоистые изображения, частицы, различные свойства, такие как скорость, с которой должен перемещаться каждый слой, и открытые методы для запуска и остановки прокрутки фона.
В этом проекте вы собираете эти отдельные классы, которые выполняют свою работу, в сцену, которая в основном обрабатывает обновление: физику, сенсорные события и т. Д.
источник