这是我遇到的错误,请查看所附图片以获取更多信息。
com.apple.scenekit.scnview-renderer(17):EXC_BAD_ACCESS(代码= 1,地址= 0xf000000010a10c10)
我可以在调用以下函数时重现此错误,但前提是此函数在一秒钟内被多次调用。如果用户快速点击该按钮以循环到下一辆可用的汽车,则会发生这种情况。
如您所见,我尝试将其包装在a中DispatchQueue以解决我的问题。
您还会注意到,我创建了一个Bool alreadyCyclingCars来跟踪该cycleCarNext()函数是否已完成,然后再允许再次调用它。
这个功能主要是通过所有的迭代unlockedCars中unlockedCars阵列。
如果汽车的类型与我们当前正在寻找的汽车相匹配,我会打破循环。
然后我们确定当前汽车的索引,以查看我需要显示的下一辆汽车是否是数组中的下一辆汽车(如果有)(如果没有),我们到达了数组的末尾,因此我显示了第一辆汽车在数组中。
有谁比我对此了解更多?真的很感谢,谢谢!
func cycleCarNext() {
DispatchQueue.main.async { [weak self] in
guard let self = self else { return }
if !self.alreadyCyclingCars {
self.alreadyCyclingCars = true
var indexOfCurrentCar = 0
for (index, car) in UserData.shared.unlockedCars.enumerated() {
if car.type == self.overlayScene.currentCarOnDisplay {
indexOfCurrentCar = index
break
}
}
if indexOfCurrentCar < UserData.shared.unlockedCars.count - 1 {
let nextCar = UserData.shared.unlockedCars[indexOfCurrentCar+1]
self.playerNode.removeFromParentNode()
self.playerNode = …Run Code Online (Sandbox Code Playgroud) 我在SceneKit中遇到平滑阴影时遇到问题.您将在下面找到将灯光添加到场景中的代码以及图片.我圈出了像素化的区域.
甚至SceneKit提供的基本几何图形也没有正确着色.
有谁知道我怎么解决这个问题?
谢谢!
let directionalLight = SCNNode()
directionalLight.light = SCNLight()
directionalLight.light?.type = .directional
directionalLight.light?.castsShadow = true
directionalLight.eulerAngles = SCNVector3(0, -toRadians(angle: 45), -toRadians(angle: 60))
self.scene.rootNode.addChildNode(directionalLight)
let ambientLight = SCNNode()
ambientLight.light = SCNLight()
ambientLight.light?.type = .ambient
ambientLight.light?.color = UIColor.darkGray
ambientLight.light?.intensity = 5000
self.scene.rootNode.addChildNode(ambientLight)
Run Code Online (Sandbox Code Playgroud)