Доступ к определенному SKNode много раз в секунду без ущерба для производительности - PullRequest
0 голосов
/ 15 мая 2019

Я работаю над игрой, которая использует 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)
}

Возможно ли это сделать? Спасибо.

...