【发布时间】:2016-01-14 08:15:43
【问题描述】:
我正在制作一个简单的游戏。故事板流程如下所示:
[Title Screen] --> [Game Screen] --> [Game Over Screen]
从游戏结束屏幕,当用户按下 MENU 时,我想直接跳回标题屏幕,而不会看到游戏屏幕出现。
我第一次尝试这个是在我的GameOverViewController:
- (void) pressesBegan:(NSSet<UIPress*>*) presses withEvent:(UIPressesEvent*) event
{
for (UIPress* press in presses)
{
if (press.type == UIPressTypeMenu)
{
[self.navigationController popToRootViewControllerAnimated:NO];
return;
}
}
[super pressesBegan:presses withEvent:event];
}
它正确弹出,但动画未被禁用。您可以清楚地看到游戏画面出现了一秒钟,并带有非常明显的淡入/淡出过渡。游戏视图甚至会收到-viewWillAppear: 和-viewWillDisappear: 消息。
接下来,我尝试将 pop 替换为展开转场。
[self performSegueWithIdentifier:@"Game Over to Title" sender:self];
这种效果看起来略有不同——由于某种原因,游戏画面只出现了非常短暂的持续时间——但在我们回到标题之前至少可以看到 1 或 2 帧。我在 Xcode 中的 unwind segue 上禁用了“动画”复选框。
我应该怎么做?我准备完全放弃情节提要并尝试另一种方式。我觉得他们比自己管理笔尖更复杂。如果我不能让转场干净利落,我能想到的唯一另一种选择是在层次结构中引入一个虚拟黑屏,并弄清楚如何通过弹出和转场进行过渡:
[Game Screen]
/
[Title Screen] --> [Dummy Black Screen]
\
[Game Over Screen]
【问题讨论】:
标签: objective-c uistoryboard tvos unwind-segue