SCNScene

本节学习目标

  • 掌握SCNScene的基本概念
  • 主要能干什么事情
  • 怎么使用

概念

通俗的说就是游戏场景,游戏场景主要由几何模型,灯光,照相机,和其它的属性组成,另外请注意,SCNScene这个对象包含3D场景和场景中的内容。

主要能干什么事情

  • 添加各种游戏元素到场景中
  • 读取场景文件
  • 将场景写入文件

怎么使用,我们创建一个工程演示一下

func setup() {
    scnView = SCNView(frame: view.bounds)
    view.addSubview(scnView!)
    scnView?.backgroundColor = UIColor.gray
    scnView?.allowsCameraControl = true

    ///加载游戏文件,请上网随便找一个后缀名为.dae的文件
    let scnScene = SCNScene(named: "art.scnassets/bottle.dae")
    scnView?.scene = scnScene
}

将场景写入文件中去

guard let urlStr = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first else {
  return
}
print(urlStr)
scnView?.scene?.write(to: URL.init(string: urlStr)!, options: nil, delegate: nil, progressHandler: { (progress, error, flag) in
  print(progress)
})

SCNView深入了解

1.我们怎么打开调试模式,查看我们的帧率和场中中包含多少个精灵呢?

scnView.showsStatistics = true;

2.怎么调节渲染的帧率

scnView.preferredFramesPerSecond = 30;

为什么设置帧率?

当我们的游戏画面能够满足我们的画质要求和性能要求的时候,尽量把帧率设置低点,这样能够节省我们的CPU 资源

3.怎么给游戏截屏

[self.scnView snapshot]

4.怎么查看游戏引擎的类型

if (scnView.eaglContext){
    NSLog(@"OpenGL");

}else{
    NSLog(@"metal");
}

5.怎么改善画面质量

开启抗锯齿功能,默认是关闭的

scnView.antialiasingMode = SCNAntialiasingModeMultisampling4X;

6.选择渲染模式(OpenGL+Metal)

你应该这样初始化

SCNView *scnView = [[SCNView alloc]initWithFrame:self.view.bounds options:@{SCNPreferLowPowerDeviceKey:@(true)}];

我们看看有什么可选项

// OpenGL
SCN_EXTERN NSString * const SCNPreferredRenderingAPIKey   NS_AVAILABLE(10_11, 9_0); 

// 指定渲染器使用<MTLDevice>
SCN_EXTERN NSString * const SCNPreferredDeviceKey NS_AVAILABLE(10_11, 9_0);

// 指定如果是渲染则使用Metal
SCN_EXTERN NSString * const SCNPreferLowPowerDeviceKey NS_AVAILABLE(10_11, 9_0);

results matching ""

    No results matching ""