首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >创建SKScene,init(fileNamed:) vs init(size:)

创建SKScene,init(fileNamed:) vs init(size:)
EN

Stack Overflow用户
提问于 2017-11-14 02:49:32
回答 1查看 888关注 0票数 1

如果您在Xcode中创建了一个新的游戏模板项目,默认的GameViewController将使用以下初始化程序实例化游戏场景:

代码语言:javascript
运行
复制
let scene = SKScene(fileNamed: "GameScene")

初始化器在模板文件中的使用表明,这是苹果创建SKScene的推荐方法。但是,我在堆栈溢出上看到了许多使用init(size:)初始化程序或简单的SKScene()的示例。

我想知道创建SKScene实例的最佳方法是什么,每种方法的优缺点是什么,以及在使用一种方法与另一种方法时需要注意的各种缺陷。

我问这个问题的原因是我使用init(fileNamed:)创建了我的游戏场景并构建了第1级。后来,当我试图使用init(size:)为第2级创建另一个场景时,我遇到了一些问题。也就是说,如果我使用UIScreen而不是init(fileNamed:)创建场景,那么使用init(size:)和场景的帧进行的一些位置计算似乎会产生不同的结果。

在更一般的意义上,我想听取一些非常熟悉使用iOS和SpriteKit的人对他们首选的初始化新SKScene的方法的意见,以及使用不同方法的利弊。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-14 12:00:26

我强烈建议不要使用init(size:)来创建作为游戏一部分的场景。你真的应该试着把设计和结构分开。这允许你改变你的游戏布局,而不改变任何代码,从而减少潜在的错误。

尽管如此,有一个非常常见的实践教程使用类似于这个init(size:view.size)。这会给游戏设计者带来各种各样的麻烦,并破坏了SpriteKit提供的多个设备的简单处理。人们最终倾向于在0..1坐标系中结束,在定位节点时在任何地方都放置分界,这也会导致错误,因为人们最终可能会忘记某个地方的鸿沟,或者在表示高度时使用宽度。

SKScenes有4种比例模式,用于处理场景在每个设备上的外观,并且在使用该工具开发游戏时应该始终考虑到这一点。它确实应该是第一件被讨论的事情,这样人们才能理解它背后的力量。

我建议使用init(size:)的唯一一次是当您需要创建一个无法通过sprite工具包构建器实现的动态场景时,以及当您已经建立了窗口的静态大小时。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47276888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档