我使用默认的新游戏项目制作了一个游戏,然后插入了一个普通的UIView作为app intro场景.我自从'升级'介绍到使用SKScene,其中的按钮将原始的gameViewController推入堆栈.一旦加载了游戏视图,它似乎有点滞后,所以我假设这与2个完整的skscenes和视图控制器的开销有关.我甚至将着陆场景设置为暂停,但它显然仍会使用内存!
我的问题是,我如何使用SKScene作为登陆页面(使用它自己的LandingViewController),然后有效地将GameViewController添加到堆栈中.我试过合并2个视图控制器,但这似乎是一种愚蠢的做事方式.
目前的设置:
LandingViewController
|-LandingScene
GameViewController
|- GameViewScene
|- Other Game Classes
Run Code Online (Sandbox Code Playgroud)
应用程序进入LandingViewController,它位于LandingScene(和登陆UI Sprites)中.LandingViewController处理触摸事件,如按钮等.当点击新游戏时,推动GameViewController(目前使用Segue)和GameViewController进入它的场景,游戏状态,UI,游戏板等.GameViewController处理它的场景触摸事件.当游戏结束时(点击结束游戏或游戏状态),将弹出GameViewController.
LandingViewController和GameViewController都控制着他们的动画和点击等流程,因此GameViewController可以完成游戏逻辑,就像下一轮游戏等等.任何帮助或指针都会受到赞赏,因为我想这样做!
我们SCNAction.playAudio在游戏中使用声明指出了崩溃的原因.如果playAudio在我们的游戏中调用任何语句,SCNScene/SCNView的取消初始化将随后随机触发此崩溃:
我们如何播放音频:
func playAudioSource(from node: SCNNode, source audioSource: SCNAudioSource) {
node.runAction(SCNAction.playAudio(audioSource, waitForCompletion: false))
}
Run Code Online (Sandbox Code Playgroud)
它显示了EXC_BAD_ACCESS存在CPP3DAudioEngine::RemoveContext.我们正在使用SceneKit和Swift 3开发iOS 10.3.
我正在使用许多SKScene和Sprite对象在xcode中创建游戏(Swift).我想创建一个场景(设置场景)来捕捉玩家的姓名,电子邮件,性别等.我该如何解决这个问题?如何捕获用户的输入.SKScenes不允许在UI中输入字段/值?
谢谢