SKScene
新建一个类GameScene继承SKScene,创建GameScene并加载到控制器中,要加载SKScene对象到根控制器,应该在根控制器的View转换为SKView对象,将SKScene对象加载到SKView对象中
使用根控制器去加载GameScene
import UIKit
import SpriteKit
import GameplayKit
class GameViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
//场景的尺寸
let scene = GameScene(size: CGSize(width: 2048, height: 1536))
//场景的缩放模式
scene.scaleMode = .aspectFill
//设置SKView
let skView = self.view as! SKView
skView.showsFPS = true
skView.showsNodeCount = true
/**
* 如果 ignoresSiblingOrder 为true,对于拥有相同的zPosition 属性的每一个子节点,Sprite Kit 将不
保证按照何种顺序来绘制它们。
* 如果 ignoresSiblingOrder 为false,对于拥有相同的zPosition 属性的每一个子节点,Sprite Kit 将按
照它们添加到父节点的顺序来绘制它们。
通常,将这个属性设置为true 是较好的做法,因为这允许Sprite Kit 在幕后进行性能优化,以使得你的
游戏运行得更快。
**/
skView.ignoresSiblingOrder = true
skView.presentScene(scene)
}
override var prefersStatusBarHidden: Bool {
return true
}
}
SKScene的方法
open class SKScene : SKEffectNode {
/**
SKScene初始化,参数传入场景的尺寸大小
*/
public init(size: CGSize)
/*
场景创建完毕后调用
*/
@available(iOS 10.0, *)
open func sceneDidLoad()
//表示场景的尺寸的结构体参数
open var size: CGSize
/**
场景的缩放模式
*/
open var scaleMode: SKSceneScaleMode
/**
镜头负责控制场景的View以及转场translation
*/
@available(iOS 9.0, *)
weak open var camera: SKCameraNode?
/**
游戏声音的监听者
@see SKAudioNode
*/
@available(iOS 9.0, *)
weak open var listener: SKNode?
/**
监听器和场景音频节点的音频引擎
*/
@available(iOS 9.0, *)
open var audioEngine: AVAudioEngine { get }
/**
场景的背景颜色
*/
open var backgroundColor: UIColor
@available(iOS 8.0, *)
weak open var delegate: SKSceneDelegate?
/**
场景的锚点,画面旋转的中心点
*/
open var anchorPoint: CGPoint
/**
物理仿真功能
*/
open var physicsWorld: SKPhysicsWorld { get }
/**
获取当前所属的SKView
*/
weak open var view: SKView? { get }
open func convertPoint(fromView point: CGPoint) -> CGPoint
open func convertPoint(toView point: CGPoint) -> CGPoint
/**
在场景背后,Sprite Kit 运行了一个无限的循环,我们通常称之为游戏循环(gameloop),可以将想要在每一帧中运行的代码放到这里
*/
open func update(_ currentTime: TimeInterval)
/**
在任何物理模拟之前,任何动作被评估后每帧调用一次
*/
open func didEvaluateActions()
/**
在任何动作被评估和任何物理模拟后,每帧调用一次。
*/
open func didSimulatePhysics()
/**
在启用任何约束之后,每帧调用一次。在下次更新之前
任何物理体的变化是不模拟,直到下一次更新。对约束的任何更改将不会应用到下一次更新。
*/
@available(iOS 8.0, *)
open func didApplyConstraints()
/**
所有更新逻辑已完成后调用
*/
@available(iOS 8.0, *)
open func didFinishUpdate()
open func didMove(to view: SKView)
open func willMove(from view: SKView)
open func didChangeSize(_ oldSize: CGSize)
}