【发布时间】:2017-01-24 08:13:39
【问题描述】:
注意:
已经有几个与此相关的问题(或资源):
-
Present an UIAlertController with a SpriteKit scene (Objective-C)
-
Displaying a UIAlertController in GameScene (SpriteKit/Swift)
所以我很抱歉添加了一个类似的问题。但是,我尝试实施这些解决方案但没有成功。
为了使这个问题比上述问题更具体,让我们使用 M.W.E. (Stack Overflow SKSpriteKit) 在另外两个与 Swift 相关的问题中提出:
- Swift: SKSpriteKit, using Storyboards, UIViewController and UIButton to set in game parameters?
- Swift: returning to Main Menu after condition is met in GameScene using StoryBoards and UIViewControllers?
上下文:
在M.W.E.
有一个主UIViewController、GameViewController 调用主菜单场景,即SKView。各种自定义SKViews循环链接:
菜单 -> 难度 -> 游戏 -> 分数 -> 菜单 -> 等等
我提到这一点,因为在上述大多数问题中,必须将UIAlertController 添加到主UIViewController。我只是想确保只有GameScene 可以呈现UIAlertController 而没有其他场景。
问题:
如何仅从SKViews 之一实现UIAlertController 可调用?之前的一些答案,只有主GameViewController和GameScene,然后给GameScene(GameViewController中的一个常量)引用GameViewController。由于在此代码中,GameScene 直到很久以后才被访问,如何实现这一点(理想情况下,不通过各种 SKViews 传播对 GameViewController 的引用。
回答此问题时请使用M.W.E.。
目标:
在另一个相关问题中,
Swift3: UISwipeGestureRecognizer in only one of putatively many SKViews,它提出了如何为一个SKView 实现UIGestureRecognizer。理想情况下,UIAlertController 将在该操作之后显示 - 作为游戏中的菜单。
最小工作示例
【问题讨论】:
-
我认为之前已经向您指出了这一点,但让我说得很清楚:SpriteKit 和 UIKit 不能很好地配合使用。如果您可以在 SpriteKit 中完成所有操作,那么您将更容易解决这个问题以及所有后续问题。换句话说,您使用故事板和 SpriteKit 的愿望是您最大的问题来源。据我所知,没有人能以这种方式找到快乐的工作方式。
-
换句话说:SpriteKit 和 GameplayKit 旨在明确地协同工作。这并不有趣,也没有很好的解释或表达,也很少使用。期望两个相互矛盾的框架(SKScene vs UIViewControllers)找到愉快的方式一起玩是在询问很多框架,它们似乎根本没有被设计成要做。他们不是快乐的露营者。
-
@Confused the M.W.E.不再使用 UIKit 或故事板来处理菜单。如果您有更好的方法来实现弹出暂停菜单,那么我很想向您学习
-
@SumNeuron 为您在提问方面的进步表示支持,做得好。最小的工作示例是您可以在问题中提出的最好的东西,这很有帮助,太好了。
标签: swift uiviewcontroller sprite-kit uialertcontroller