gpt4 book ai didi

ios - 创建SKScene,init(fileNamed :) vs init(size :)

转载 作者:行者123 更新时间:2023-12-01 19:48:19 26 4
gpt4 key购买 nike

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

let scene = SKScene(fileNamed: "GameScene")

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

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

我问的原因是,我使用 init(fileNamed:)创建了我的游戏场景并构建了1级。当我后来尝试使用 init(size:)为2级创建场景的另一个实例时,我遇到了问题。即,如果我使用 UIScreen而不是 init(size:)创建场景,则使用 init(fileNamed:)和场景框架的某些位置计算似乎会产生不同的结果。

从更一般的意义上讲,我想听听一个非常熟悉使用iOS和SpriteKit的人的意见,即他们偏好的初始化新 SKScene的方式以及使用不同方法的利弊。

最佳答案

我强烈建议在创建要用作游戏一部分的场景时,不要使用init(size:)。您确实应该尝试使设计与结构分离。这使您可以更改游戏布局,而无需更改任何代码,从而减少了潜在的错误。

话虽这么说,但是有一个非常常见的实践教程使用,类似于init(size:view.size)。这会给游戏设计师带来各种麻烦,并破坏SpriteKit提供的多种设备的简单处理。人们倾向于以0..1坐标系结束,在定位节点时将分隔线放置在任何地方,这也会导致错误,因为人们最终可能会忘记某个地方的分隔线,或者在他们指的是高度时使用宽度。

SKScenes具有4种缩放模式,可处理每个设备上的场景外观,使用此工具开发游戏时应始终将其考虑在内。确实应该首先讨论这件事,以便人们可以理解其背后的力量。

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

关于ios - 创建SKScene,init(fileNamed :) vs init(size :),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47276888/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com