Ios 从SKNode访问SKView方法

Ios 从SKNode访问SKView方法,ios,swift,xcode,sprite-kit,Ios,Swift,Xcode,Sprite Kit,在SpriteKit开发中,应该如何访问SKView 比如,;假设我创建了一个名为Player的自定义SKNode类,用于整个游戏: class Player: SKNode { /*...*/ } 在这个类中,如果我想从SKShapeNode生成一个SKSpriteNode(为了提高性能),我需要使用SKView.texture()方法。但是我不能访问我的播放器所在的SKView,除非我将视图从实例化它的人那里传递给播放器 是否有任何方法可以获取连接了SKNode的当前视图,这样我就

在SpriteKit开发中,应该如何访问SKView

比如,;假设我创建了一个名为Player的自定义SKNode类,用于整个游戏:

class Player: SKNode {

  /*...*/

}
在这个类中,如果我想从SKShapeNode生成一个SKSpriteNode(为了提高性能),我需要使用
SKView.texture()
方法。但是我不能访问我的播放器所在的SKView,除非我将视图从实例化它的人那里传递给播放器

是否有任何方法可以获取连接了SKNode的当前视图,这样我就不必在应用程序周围传递对视图的引用?这只是框架的一个异常现象吗?处理这个问题的首选方法是什么

我用的是斯威夫特语

更新

Ron Myschuk的回答是正确的,我接受了,因为它可能对社区最有用。然而,我希望从节点内访问视图的用例是为了使用纹理方法从SKShapeNode创建SKSpriteNode

以下是我想要访问的方法的描述:

渲染节点内容的一部分,并将渲染图像作为SpriteKit纹理返回

这种方法在视图之外似乎很有用。例如,初始化/填充尚未添加到显示树的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

您可以从
UIImage
CGImage
创建
SKTexture
,也可以从所需的每个复杂路径/图形创建图像(例如,请参见或)。

但如何确保将节点添加到场景中?我是否可以使用SKNode的didMove等价物?如果尚未添加到场景中,场景将返回nil,因此只需执行简单的nil检查即可;但此时代码将不会执行。除非我可以在类的构造函数中使用场景,或者在实例化的类被添加到场景中时响应事件,否则我仍然无法使用这种技术。我想我希望有更多的约定来处理想要使用(似乎是)SKView的实用方法的问题,无需从显示链的更上层启动模式。从字里行间看,听起来你好像在说这是不可能的。我决定接受你的回答,因为它确实回答了我问题的主要部分,而且可能会最好地服务于社区。我已经用我的特定用例的解决方案更新了我的问题。“如何通过视图控制器访问SKView”我知道在SK中构建纹理的这个问题/痛苦。下面是我的一些发现,用不必要的长篇大论来说:,我似乎找不到从链接中的路径创建SKTexture的示例。您可以将示例代码添加到您的答案中吗?这里有一个创建图像的示例,然后使用SKTexture的相应构造函数。您可以按照SO最佳实践将示例代码添加到您的答案中吗?就我从您的链接中所知,没有创建UIImage而不必指定文件或填充像素数据的示例。因此,从矢量路径创建纹理的示例不在链接中的任何位置…好的,可能是这个吗?