首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SKReferenceNode引用的SpriteKit场景不加载自定义类

使用SKReferenceNode引用的SpriteKit场景不加载自定义类
EN

Stack Overflow用户
提问于 2019-09-22 21:46:48
回答 2查看 257关注 0票数 1

我有一个GameScene.sks,一个自定义类GameScene.swift,它是通过自定义类检查器(在Xcode中的右侧)连接的。这工作得很好。

现在,在我想引用另一个场景的GameScene.swift中,我想在未来的许多场景中重用它(过于简化的代码):

代码语言:javascript
复制
class GameScene: SKScene {
  // ...
  override func didMove(to view: SKView) {
    //...

    guard let gameMenuPath = Bundle.main.path(
      forResource: "GameMenu", ofType: "sks") else { return }

    let url = NSURL(fileURLWithPath: gameMenuPath) as URL
    let gameMenu = SKReferenceNode(url: url)

    addChild(gameMenu)

    //...

我正在加载一个可重用的GameMenu.sks

在这里之前一切都很好。现在是GameMenu.sks (要重用的场景)的自定义类问题。对于GameMenu.sks,我还有一个GameMenu.swift,它在自定义类检查器中被引用为自定义类。所以和GameScene的情况完全一样。问题是似乎没有找到/加载GameMenu.swift。我没有得到错误-所以看起来我拼错了自定义类-但我检查了很多次,还清除了Xcode缓存。

你知道如何为一个场景(.sks)设置另一个场景中引用的自定义类吗?

我认为这是为可重用场景部分所做的事情,在我的例子中,suche是在每个GameScene中都可见的GameMenu

谢谢你的任何提示。

EN

回答 2

Stack Overflow用户

发布于 2019-09-22 22:11:53

是否需要通过代码在GameScene中添加GameMenu?您也可以简单地使用检查器。在你的GameScene.sks中删除'Reference‘(SKReferenceNode)对象。从层次结构中选择它,然后在'reference‘下拉列表中选择GameMenu as。

票数 1
EN

Stack Overflow用户

发布于 2019-09-29 06:40:27

SKReferenceNodes的行为类似于节点,而不是场景,这可能会导致混淆,因为您正在创建场景文件。

这意味着视图对场景调用的任何函数都不会被调用。

如果需要调用这些函数中的一些函数,则需要手动执行。

看看这个例子,让你的didMoveToView启动:

代码语言:javascript
复制
override func didMove(to view: SKView) {

    let gameMenu = SKReferenceNode(fileNamed:"GameMenu") as? SKScene // (or your custom class)

    addChild(gameMenu)
    gameMenu.didMove(to:view)
 }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58049817

复制
相关文章

相似问题

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