Там нет глобального метода к повороту Прикосновение, все, что находится наверху очереди рисования, является первым ответчиком.
Вам нужно перебирать все ваши узлы с вашей сцены и превратить их:
enumerateChildNodesWithName("//*", usingBlock:
{ (node, stop) -> Void in
node.isUserInteractionEnabled = false
})
Теперь задача превратить их обратно, если вы используете этот метод, вы превратите его на все , так что вы можете принять именование для всех оголенных спрайтов
enumerateChildNodesWithName("//touchable", usingBlock:
{ (node, stop) -> Void in
node.isUserInteractionEnabled = true
})
Это будет выглядеть для любого узла, который имеет имя, которое начинается с осязаемым.
Этот метод включает рекурсию, поэтому, если у вас есть тонна узлов, она может быть медленной. Вместо этого вы должны использовать альтернативный метод:
let disableTouchNode = SKSpriteNode(color:SKColor(red:0.0,green:0.0,blue:0.0,alpha:0.1),size:self.size)
disableTouchNode.isUserinteractionEnabled = true
disableTouchNode.zPosition = 99999
self.addChild(disableTouchNode)
Что это делает шлепок на почти прозрачный узел поверх всех элементов размером сцены. Таким образом, когда пользователь коснется экрана, этот узел поглотит его, а не что-либо еще.
Уч. И Юк. Плюс СПАСИБО! Я решил поместить объекты, которые хочу отключить, в массив, перевернуть их на взаимодействие, а затем вернуться, когда они мне понадобятся. Препятствует тому, что нет более быстрого способа временно отключить все входные данные. – Confused
И хороший трюк, «слой» на 99999, чтобы захватить и проглотить прикосновения! – Confused
Теперь я использую эту перечисляемую вещь, чтобы удалить один конкретный узел ... таймер из другого вопроса ... можете ли вы объяснить, что делает '(node, stop)'? – Confused