ios - 从 SKNode 访问 SKView 方法

标签 ios swift xcode sprite-kit

在 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/

相关文章:

ios - 使用 Swift 在没有 Storyboard的情况下展开 segue

ios - 使用 URL swift Alamofire 上传视频

ios - 如何从我们的 iOS 应用程序中取消 BLE 设备的配对?

ios - 不能在 swift 中使用 "Analyze"吗?

ios - 无法在 uiimageview swift 中将 map 设置为图像

Swift 编译器错误 : Type '[AnyHashable : Any]?' has no subscript members

ios:我需要填充 UIImage 的一半

ios - 我可以在 Document Provider 扩展上使用 Navigation Controller 来模拟文件夹导航吗?

ios - Alamofire:有没有办法在失败的情况下获取响应数据?

ios - UILocalNotification 根本不起作用