嗨,好吧,我只有一个UIView
只是标准的默认 Controller ,但是我在另一个.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
如上所示,我要过渡到的 Controller 以UIViewController开头,然后再下一行作为
SCNView
放进去。在这一行代码中,让scnView = self.view为!
SCNView
,但是当我尝试从SKScene
过渡到此场景时,如何在Swift代码中做到这一点?我正在启动的 Controller 如下所示
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) {
}
最佳答案
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
。
过渡中
您可以通过调用 View 的 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
关于ios - 如何从SKView过渡到SCNView?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33731738/