Я пытаюсь обнаружить столкновения между узлами, которые раньше не сталкивались в моей игре SpriteKit, вызывая node.hash и сохраняя новые узлы в наборе. Я вижу, что через некоторое время новые узлы имеют тот же хеш, что и узлы, которые я ранее называл node.removeFromParent() on.SpriteKit: Хеширование переработанного SKShapeNode
Я предполагаю, что, поскольку я удаляюсь из родителя и снова создаю очень похожие узлы снова и снова, SK автоматически перерабатывает некоторые узлы.
Как я могу получить по-настоящему уникальный хэш из узлов в SpriteKit?
Пожалуйста, дайте мне знать, если потребуется дополнительное разъяснение. Я чувствую, что размещение моего кода не будет слишком актуальным для этого сообщения.
Кроме того, я не могу воспроизвести эту проблему, когда я отлаживаю свой телефон, подключенный к xcode, но я добавил журнал, который показывает, что node.hash не уникален для вновь созданных узлов. Кто-нибудь знает, почему поведение по переработке будет отличаться от моего телефона, подключенного к Xcode?
Одним из решений может быть расширение SKShapeNode и добавление переменной hasCollided, но я чувствую, что это чрезмерное проектирование, что можно сделать проще с помощью правильного метода хэширования. – shivsta
Когда вы говорите «по-настоящему уникальный», вы имеете в виду содержание (что представляют узлы) или вы можете просто использовать указатели экземпляра как значение хэширования? Извинения за незнание SpriteKit. – xtravar
Я тоже не слишком знаком с SK. Содержимое каждого из узлов является таким же. Я считаю, что хеш-функция просто возвращает пятно узла в памяти, которое используется повторно. Я работал вокруг этого за раз, удаляя хэш узла из набора непосредственно перед его уничтожением. Но мне все же хотелось бы знать, есть ли способ получить другое значение хэша для каждого экземпляра SKShapeNode. – shivsta