SIGABRT на узле молнии, имеющем битовую маску - PullRequest
0 голосов
/ 07 мая 2019

Я работаю над игрой SpriteKit для macOS (10.14.4) со Swift 4.2, и я хотел бы добавить немного света на сцену.

Игра представляет собой карту тайлов, созданную SKTiled (https://github.com/mfessenden/SKTiled). Проблема в том, что когда я пытаюсь применить эффект освещения к некоторым спрайтам (согласно https://developer.apple.com/documentation/spritekit/sklightnode/lighting_a_sprite_with_light_nodes),, вся игра вылетает, и я не могу понять, почему. Вот (часть) мойcode:

class GameScene: SKScene, SKTilemapDelegate {
  var backgroundLayer: SKSpriteNode!

  override func didMove(to view: SKView) {
    super.didMove(to: view)
    backgroundLayer = SKSpriteNode(color: bgColor, size: size)
    backgroundLayer.position.x = 0
    backgroundLayer.position.y = 0
    backgroundLayer.lightingBitMask = 0b0001
    camera?.addChild(backgroundLayer)
  }
}

И у меня есть SKLightNode внутри моего файла GameScene.sks со свойством Lightning Mask, установленным на 1. Когда я добавляю несколько спрайтов прямо в файл и устанавливаю их маску молнии на 1,эффект молнии виден. Но все, что я получаю, выполняя код, является этой ошибкой: « Поток 1: сигнал SIGABRT » в классе AppDelegate и это к консоли вывода: « validateFunctionArguments: 3469: сбой утверждения`Функция фрагмента (PointLight_FragFunc): отсутствует привязка буфера в индексе 2 для u_light_position [0]. '"

Я заметил, что при удалении строки " backgroundLayer.lightingBitMask = 0b0001", приложение работает нормально ...

Я пытался указать это значение с помощью juste ' 1 ' и ' UInt32 (точно: 1) 'но ни один из них не работает.Я пытался создать и добавить SKLightNode непосредственно из кода, но та же проблема.И это то же самое, если я пытаюсь применить эффект молнии к другим узлам SKSpriteNode.

Я также заметил, что ошибка возникает после выполнения всей функции ' didMove (to:) ', добавляя несколько точек останова, поэтому она даже не падает на строке, вызывающейпроблема.

Так что теперь я действительно беспомощен, и, кажется, невозможно заставить его работать, поэтому я обращаюсь к себе, чтобы помочь мне, спасибо !!:)

...