我正在开发涉及SKLightNodes的游戏。在执行它们的过程中,我注意到有时它们根本不会渲染。现在,我已经研究并测试了这种情况的几乎每个方面,都花费了几个小时,即:更改衰减,位掩码,颜色和位置。最后,我创建了一个新项目作为测试,并编写了一些非常基本的代码,如下所示。
class GameScene: SKScene {
let texture = SKTexture(imageNamed: "Background")
let background = SKSpriteNode()
let light = SKLightNode()
override func sceneDidLoad() {
texture.filteringMode = .nearest
background.texture = texture
background.lightingBitMask = 1
background.shadowCastBitMask = 0
background.shadowedBitMask = 0
background.size = CGSize(width: 500, height: 500)
addChild(background)
light.categoryBitMask = 1
light.ambientColor = .yellow
light.lightColor = .white
light.shadowColor = .blue
light.position = CGPoint(x: frame.midX, y: frame.midY)
addChild(light)
}
}
当我运行它时,它每次都完全按预期运行。然后,我将此代码复制并粘贴到我的当前项目中,没有任何更改或任何更改,并且它工作异常且不一致。我检查了灯光是否在正确的位置,口罩是否正常工作以及是否没有从父母那里移除。是否有人知道Xcode中的某件事会阻止LightNode一致地渲染。我已经在Xcode Beta以及iOS 13和14设备上的Xcode 11的稳定版本中都进行了尝试。任何和所有帮助表示赞赏。 :)