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)
}

results matching ""

    No results matching ""