在 SpriteKit 开发中,应该如何访问 SKView?
例如;假设我创建了一个名为 Player 的自定义 SKNode 类以在我的整个游戏中使用:
class Player: SKNode {
/*...*/
}
在这个类中,如果我想从 SKShapeNode 生成一个 SKSpriteNode(为了提高性能)我需要使用 SKView.texture( )
方法。但是我无法访问我的 Player 所在的 SKView,除非我将 View 从实例化它的人那里传递给 Player。
有什么方法可以获取附加了 SKNode 的当前 View ,这样我就不必在我的应用程序周围传递对 View 的引用了吗?这只是框架的异常吗?处理此问题的首选方法是什么?
我正在使用 Swift 语言。
更新
Ron Myschuk 的回答是正确的,我接受了它,因为它可能对社区最有用。然而,我想要从节点内访问 View 的用例是为了使用纹理方法从 SKShapeNode 创建 SKSpriteNode。
这是我想要访问的方法的描述:
Renders a portion of a node’s contents and returns the rendered image as a SpriteKit texture.
https://developer.apple.com/documentation/spritekit/skview/1519994-texture
这个方法在 View 之外似乎很有用。例如,在初始化/填充尚未添加到显示树的 SKNode 时。
我对这个特定问题的解决方案是简单地动态创建一个 SKView 并将其用于我的需要,允许它被引擎收集为垃圾。
let view = SKView()
let texture = view.texture(from: someSkShapeNode)
let sprite = SKSprite(texture: texture)
// we don't need view anymore
希望这对某人有帮助。
最佳答案
如果你已经在你的场景中添加了一个 player 实例并且你没有在 Player 的初始化程序中做他,你可以使用 .scene 属性
self.scene?.view
关于ios - 从 SKNode 访问 SKView 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48917153/