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