Я пытаюсь создать игру и, следуя совету Apple, использую несколько сцен. Вы могли бы рассматривать игру как текстовое приключение с наведением курсора и щелчком мыши.
В этом и проблема. Много текста, проведя небольшой поиск, кажется, рекомендуемый способ, или, скорее, текущий единственный способ сделать это с помощью UITextView
таким образом:
[self.view addSubview: textView];
Это все хорошо, если у вас есть только один SKScene
, так как это сцена, отображаемая текущим представлением/SKView.
Моя проблема в том, что, когда я добавляю текст в представление * моей сцены, которое не является первой сценой, загруженной приложением (третьей или выше), приложение возвращается к первой загруженной сцене (это мое меню сцена) и радостно отображает нужный текст.
Кто-нибудь понял, почему? У меня есть сцена меню, переходящая на сцену один, на сцену два (в которой я хочу отобразить тест).
Пожалуйста, не говорите, что мне нужно представление на сцену, если я хочу отображать больше, чем несколько слов на сцену, это просто не имеет смысла, но, возможно, также не имеет смысла мое использование SpriteKit.
Я до сих пор несколько ошеломлен отсутствием SK-эквивалента UITextView
.
В любом случае, любая помощь, указатели были бы замечательными, спасибо.
Хорошо, вот соответствующие части кода... Думаю. Контроллер:
- (void)viewWillLayoutSubviews
{
[super viewWillLayoutSubviews];
// Configure the view.
SKView *skView = (SKView *)self.view;
skView.showsFPS = YES;
skView.showsNodeCount = YES;
skView.showsDrawCount = YES;
// Create and configure the scene.
SKScene *scene = [[GTMainMenu alloc] initWithSize:skView.bounds.size];
// Present the scene.
[skView presentScene:scene];
}
где GTMainMenu
является подклассом SKScene
и имеет кнопку (оранжевая рамка) для «действия» (подкласс GTScene
, сам подкласс SKScene
), это вызовет переход к действию, у которого есть еще одна кнопка для первого место действия. Только вы так и не доберетесь до сцены, так как viewDidLoad
вернет вас в главное меню.
Это viewDidLoad сцены, который заставит ее «перепрыгнуть» обратно в главное меню:
- (void)didMoveToView:(SKView *)view
{
[super didMoveToView:view];
if (!self.contentCreated) {
[self createSceneContents];
self.contentCreated = YES;
}
UITextView *textView = [[UITextView alloc] initWithFrame:CGRectMake(self.size.width/2, self.size.height/2+20, 200, 40)];
textView.center = self.view.center;
textView.textColor = [UIColor blackColor];
textView.font = [UIFont systemFontOfSize:17.0];
textView.backgroundColor = [UIColor whiteColor];
textView.text = @"Where am I?";
[self.view addSubview:textView];
}
Репозиторий git доступен здесь.
Это урезанная версия моего проекта, в которой удалено все, что не имеет отношения к рассматриваемой проблеме.
Если вы извините за код, моя основная работа — это Java, и в данный момент я борюсь с некоторыми концепциями в Objective C. О, и извините, мне удалось включить пользовательские настройки: S