Я возвращаю SKNode
из одной функции, и мне нужно отправить ее на заказ SKNode
. Я получаю ошибку Cannot assign value of
SKNode to type
GroundNode. Если я принудительно сбрасываю, он компилируется, но не выполняется во время выполнения. Что мне не хватает?Нельзя использовать SKNode для подкласса SKNode
// Custom node class
class GroundNode: SKNode {
weak var entity: GKEntity!
}
// Return node function
func returnNode() -> SKNode {
...
return node
}
// Where I am getting the error
func setupNode() {
var ground: GroundNode
ground = returnNode() // error here.
//// ground = returnNode() as! GroundNode fails at runtime.
}
EDIT: Я получаю SKNode
из файла SKS. Мой returnNode()
просто введите дочерний элемент с именем и вернет его в мою функцию setupNode()
. Мне нужно добавить свойство entity, поэтому я хочу отдать мой возвращенный SKNode
в тип GroundNode
.
Я видел this stackoverflow post.
Это работает с SKSpiteNode
, но, по-видимому, не с SKNode
, что для меня не имеет смысла.
Если я набросил свой SKNode
из моего файла sks на GroundNode
, он сработает во время выполнения.
Могу я спросить, почему вы преследуете эту настройку? При назначении регулярного SKNode этому GroundNode вы обещаете любой логике, обращающейся к этой переменной, что это GroundNode - даже если это может быть не так, поскольку returnNode может возвращать объект _any_ SKNode. Без лишнего контекста это звучит как плохая идея для меня. – CloakedEddy
Вы уверены, что в 'setupNode' вызов' returnNode' фактически возвращает экземпляр 'GroundNode'? Это не похоже ... Используйте отладчик, чтобы наблюдать, что на самом деле происходит. –
Я думаю, что вы забыли установить свой собственный класс, я объясню это в своем ответе. –