ios - overlaySKScene 无法通知主 SCNScene
问题描述
我有一个包含 asceneView: SCNView
和 SKScene 叠加层的基本游戏sceneView.overlaySKScene = OverlayScene(...)
。
当在overlaySKScene 中点击一个按钮时,我想通知主sceneView 执行一些动画,然后开始我的游戏。
我已经thouchesBegan
按照 Apple 的建议覆盖了 overlaySKScene 中的:
class OverlayScene: SKScene {
override func touchesBegan(...) {
...
现在我想观察这个按钮点击并执行动画:
observe(\GameViewController.sceneView.overlaySKScene.someProperty) { (selfRef, change) in
selfRef.setGame(updatedState: someValue)
}
但我无法观察到 overlaySKScene 及其属性。
通知sceneView
来自的正确方法是SKScene
什么?
解决方案
已经有一段时间了,但我想我使用协议来解决这个问题。当按下 SK 按钮时,我想在不同的类中更改 gameState。它工作得很好,但除了声音之外,我对 SKScene 并没有做太多,所以我最终只是在 Scenekit 的顶部做了 UIViews,如果你可以选择的话,这会容易得多。如果没有,那么您可能会搜索视图控制器之间的通信,有几个选项。
推荐阅读
- php - LocalHost 上的 PHP 连接被拒绝 (HY000/2002)
- javascript - JavaScript | 返回字符串中最常见的多个字符
- regex - 如何为十进制值数组编写正则表达式?
- java - 单击列表视图时,无法在另一个活动中显示来自 sqlite 数据库资产的文本
- google-sheets - Google 表格脚本 - 如何替换公式中的文本?
- ti-basic - 通过菜单阻止 TI-Basic 继续运行
- javascript - PHP Foreach 多次显示一组值
- hive - AWS Athena(Presto with JsonSerde)在某些列名上悄悄失败,哪些是可以接受的?
- python-3.x - 如何根据条件获取给定数据的 k 聚类平均值?
- node.js - 如何在 AWS Lambda 函数中进行外部 api 调用