Я работаю над игрой, которая использует Game Center для реализации многопользовательских функций.
Допустим, у нас на сцене около 50 SKNode
х и двух игроков. Player1
взаимодействует с 25 из них и обновляет их позиции; когда это происходит, событие передается Player2
с пакетом, содержащим все векторы, описывающие текущее движение узлов.
Каждый из этих узлов имеет уникальный идентификатор, uniqueID: UInt8
.
Когда Player2
получает пакет, содержащий все векторы, сцена должна будет соответственно обновить все узлы в зависимости от их уникальных идентификаторов, и здесь возникает проблема.
Чтобы получить доступ к конкретному узлу, учитывая его идентификатор, необходимо получить доступ к дереву SKScene
узлов, выполнить поиск по нему и извлечь конкретный узел по назначенному имени или идентификатору класса .
Я бы лично не хотел этого делать; скорее, я хотел бы получить доступ к узлу SKScene
, учитывая его произвольно назначенный идентификатор.
// Data from Multiplayer received handler
func dataReceived(data: Data) {
let decodedData: UInt8 = ...
let UID = decodedData << ...
// Right now, I may only access the entity through its name
let entity = scene.childNode(withName: String(UID))!
// Modify the entity's properties according to the packet received
// I would like to access the entity (or aka node) like so, without having to search through the children, single-access
let entity = scene.getSpecificNode(withUID: UID)
}
Возможно ли это сделать? Спасибо.