SCNTransaction颜色褪色?

时间:2017-01-16 22:29:07

标签: swift scenekit

我试图平滑地淡化我的节点颜色,但似乎无法使SCNTransaction正常工作。我想慢慢地从一种颜色过渡到另一种颜色。

    let defaultMaterial = SCNMaterial()
    defaultMaterial.diffuse.contents = randomColor()
    defaultMaterial.specular.contents = randomColor()
    defaultMaterial.emission.contents = randomColor()

    SCNTransaction.begin()
    SCNTransaction.animationDuration = 2.0
    emptyLeftSquare.firstMaterial? = defaultMaterial
    emptyRightSquare.firstMaterial? = defaultMaterial
    emptyUpSquare.firstMaterial? = defaultMaterial
    emptyDownSquare.firstMaterial? = defaultMaterial
    emptyBottomRightLink.firstMaterial? = defaultMaterial
    emptyBottomLeftLink.firstMaterial? = defaultMaterial
    emptyTopLeftLink.firstMaterial? = defaultMaterial
    emptyTopRightLink.firstMaterial? = defaultMaterial
    SCNTransaction.commit()

1 个答案:

答案 0 :(得分:1)

我认为您在事务开始之前只设置defaultMaterial一次,并在动画持续时间内重复使用相同的值。由于在设置初始值后没有变化,因此您没有看到任何颜色变化。

如果您在transaction内再次设置颜色,那么您应该没问题。或者,如果您希望每个方块和链接的颜色不同,则将初始defaultMaterial设置重构为方法并重用该方法。