如何从 SKView 转换到 SCNView?
Posted
技术标签:
【中文标题】如何从 SKView 转换到 SCNView?【英文标题】:How to transition to SCNView from a SKView? 【发布时间】:2015-11-16 09:11:03 【问题描述】:嘿,好的,我有一个 UIView
只是标准的默认控制器,但是我在另一个 .swift 文件中有一个 SCNView
,所以我可以从标准的 UIViewController
转换为 SKScene
,但我无法转换从SKScene
到SCNcene
的关键在于我的代码
class PlayController: UIViewController, ADBannerViewDelegate, SKPhysicsContactDelegate, SKSceneDelegate, SCNSceneRendererDelegate, SCNPhysicsContactDelegate
let scnView = self.view as! SCNView
let skScene = scnView.overlaySKScene
scnView.overlaySKScene = skScene
scnView.backgroundColor = UIColor.whiteColor()
scnView.scene = FieldScene
scnView.delegate = self
scnView.allowsCameraControl = true
scnView.showsStatistics = false
如上所示,我尝试转换到的控制器以 UIViewController 开始,然后再往下放置为SCNView
。
在这行代码中让 scnView = self.view as! SCNView
但是当我试图从 SKScene
过渡到这个场景时,我将如何在代码 Swift 中做到这一点?
我开始使用的控制器如下所示
import iAd
import UIKit
import GameKit
import SceneKit
import StoreKit
import SpriteKit
import QuartzCore
import Foundation
import AVFoundation
import AudioToolbox
//============================================================
class MainMenuController: SKScene, ADBannerViewDelegate, SKPhysicsContactDelegate, SKSceneDelegate, SCNSceneRendererDelegate, SCNPhysicsContactDelegate
override func didMoveToView(view: SKView)
【问题讨论】:
还需要给FieldScene加上括号,所以scnView.scene = FieldScene() 【参考方案1】:overlaySKScene
let skScene = scnView.overlaySKScene
和 scnView.overlaySKScene = skScene
的实现应该更改,因为它们无效
创建 SKScene 对象:let overlayScene = SKScene(size: CGSizeMake(200, 200))
.
设置基础对象的位置:base.position = CGPointMake(75, 0)
。
将基础对象添加到场景:overlayScene.addChild(base)
。
设置场景叠加:scnView.overlaySKScene = overlayScene
.
过渡
您可以通过调用视图的 presentScene:withTransition:incomingPointOfView:completionHandler: 方法来添加过渡。
sceneView.presentScene(nextSceneToLoad(),
withTransition:skTransition,
incomingPointOfView:nil, completionHandler:nil)
另一个例子。
let transition = SKTransition.pushWithDirection(.Right, duration: 1.0)
self.sceneView?.presentScene(SCNScene(), withTransition: transition, incomingPointOfView: nil, completionHandler: nil)
overlaySKScene API Reference
presentScene API Reference
【讨论】:
以上是关于如何从 SKView 转换到 SCNView?的主要内容,如果未能解决你的问题,请参考以下文章
如何检测 SKSpriteNode 和 SKView SpriteKit 之间的冲突
如何从 ARSKView(或 SKView)帧创建视频,包括微音频(ios 11)
尝试转换场景时无法将 UIView 的值转换为 SCNView [重复]
SceneKit:在 SCNView 上渲染 SpriteKit 粒子系统时应用程序崩溃,当所有代码似乎都是系统代码的一部分时如何调试