仍然让我对Swift很有帮助,请保持温柔;-)
我已经设置了一个更改节点颜色的动作,我每隔几秒钟就会调用一次。第一次调用时,它就像一个饰物,但之后颜色保持不变。 我的代码:
let duration: TimeInterval = 3
var myRed = 255
var myGreen = 0
var myBlue = 0
var voltage: UInt32 = 0 {
willSet(newV) { }
didSet {
myGreen = Int.random(in: 0...255)
let act1 = SCNAction.customAction(duration: duration, action: { (node, elapsedTime) in
let percentage = elapsedTime / CGFloat(self.duration)
self.backgroundNode.geometry?.firstMaterial?.diffuse.contents = self.aniColor(from: self.oldColor, to: self.newColor, percentage: percentage)
})
if backgroundNode.action(forKey: "color") == nil {
print("Running action")
oldColor = newColor
newColor =
UIColor(red: CGFloat(myRed), green: CGFloat(myGreen), blue: CGFloat(myBlue), alpha: 1.0)
backgroundNode.runAction(act1, forKey: "color")
}
}
print("new color: \(newColor)")
print("old color: \(oldColor)")
}
}
从aniColor函数打印RBG值表明这些值确实发生了变化,因此我为为什么它只能工作一次而感到困惑。 也欢迎使用其他方法使节点的颜色淡入另一种颜色。
感谢您的时间。
编辑: 显然,我不允许对自己的问题发表评论。叹。 但是答案在评论中,谢谢E.Coms。