Xcode7场景编辑器SKSpriteNode自定义类

Posted

技术标签:

【中文标题】Xcode7场景编辑器SKSpriteNode自定义类【英文标题】:Xcode7 scene editor SKSpriteNode custom class 【发布时间】:2015-09-03 13:57:14 【问题描述】:

谁能告诉我我这样做是否正确?使用 Xcode 7.beta6 我在 Xcode 场景编辑器中设置了一个SKSpriteNode 自定义类。

import UIKit
import SpriteKit

class ZoneNode: SKSpriteNode 
    var zoneID: Int = 0

我在场景编辑器中设置了SKSpriteNode,如下所示:

注意:无论有没有模块名称,我都试过了,据我所知,它似乎没有任何区别。

似乎一切正常,场景中有 8 个 SKSpriteNodes,但只有 2 个 ZoneNodes,当我列出场景中的所有孩子时,我得到以下输出。

// CODE
let allChildren = self.children
for eachChild in allChildren 
    if eachChild.isKindOfClass(ZoneNode) 
        print("CHILD: \(eachChild)")
    

.

// OUTPUT
CHILD: <SKSpriteNode> name:'CUSTOM_SPRITE_2' texture:['nil'] position:0, 0 scale:1.00, 1.00 size:100, 100 anchor:0.5, 0.5 rotation:0.00
CHILD: <SKSpriteNode> name:'CUSTOM_SPRITE_1' texture:['nil'] position:0, 0 scale:1.00, 1.00 size:100, 100 anchor:0.5, 0.5 rotation:0.00
SKIPPED: 6

我知道self.children 返回一个 SKNode 数组[SKNode],如果我将一个节点向下转换为ZoneNode,一切都按预期工作,我可以轻松访问属性zoneID

let thisZoneNode = eachChild as! ZoneNode
thisZoneNode.zoneID = 123

我有点困惑,为什么打印将节点列为&lt;SKSpriteNode&gt; 而不是ZoneNode,尽管这可能只是指回我最初子类化的基类,有人有什么想法吗?

【问题讨论】:

【参考方案1】:

“自定义类”功能在 Xcode beta 6 中不起作用,但在 GM 版本中似乎可以正常工作 (7A218)

【讨论】:

以上是关于Xcode7场景编辑器SKSpriteNode自定义类的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法从代码中获取放置在场景编辑器中的 SKSpriteNode 的当前位置? - 精灵套件

通过名称 Swift 2、Xcode 7 获取 SKSpriteNode

SKSpriteNode 在 init(NSCoder) 中设置颜色

SpriteKit:向场景中添加多个 SKSpriteNode

SKSpriteNode 没有落入根场景

SKSpriteNode 从场景中移除后如何停止音频(Swift)?