我正在使用Xcode9.2中的Swift和SceneKit。我一直在使用NSColor对几何体应用颜色,但是突然(逐渐地)我的大多数颜色都变成了NSColor没有成员.colorname的类型。就像我的游戏编译并运行得很好,然后在下一次编译时,我用.cyan得到了一个错误。我把它改成了.black,然后它就运行了。然后另一种颜色出现错误,然后大多数颜色都出现错误。
下面是一个例子:
node.geometry?.firstMaterial?.diffuse.contents = NSColor.black我剩下的选择是:
.blue、.green、.int、.rawValue、.red、.yellow。
所有的颜色都怎么了?
编辑:我清理了项目,所有的编译都没有警告,但我仍然只有4种颜色,它们都呈现为灰色。我将节点的漫反射颜色打印到控制台,它们读取正确。
我还导入了Cocoa框架。
编辑:我发现了我的错误。
在执行查找和替换时,我不小心将枚举的名称替换为NSColor。这就是SKColor成功的原因,因为它是一个新名字。
我太尴尬了。
发布于 2018-02-08 16:36:52
您可以使用:
node.geometry?.firstMaterial?.diffuse.contents = NSColor(srgbRed: 0, green: 0, blue: 0, alpha: 1.0)通过这种方式,您可以使用自己的RGBs值创建一种颜色,因此通过这种方式可以获得黑色。最后一个参数alpha是不透明度的值,它需要为100才能看到颜色
发布于 2018-02-08 19:40:57
在您的情况下,更好的方法是使用以下语法:
NSColor(calibratedRed: 0.0, green: 0.0, blue: 0.0, alpha: 1.0)在iOS中,您应该使用如下语法:
cube.firstMaterial?.diffuse.contents = UIColor(red: 0.3, green: 0.45, blue: 0.75, alpha: 1.0)在macOS中,语法如下所示:
sphere.firstMaterial?.reflective.contents = NSColor(calibratedRed: 99.0, green: 0.0, blue: 0.0, alpha: 1.0)请记住,alpha (也称为不透明度),指定为0.0-1.0之间的值。小于0的Alpha值被解释为0.0,高于1.0的值被解释为1.0。
当然,您可以显式指定色彩空间(如sRGB):
init(srgbRed: CGFloat, green: CGFloat, blue: CGFloat, alpha: CGFloat)https://stackoverflow.com/questions/48679988
复制相似问题