类型'NSColor'没有会员'black'

时间:2018-02-08 07:36:13

标签: swift scenekit augmented-reality arkit nscolor

我在Xcode 9.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工作的原因,因为它是一个新名称。

我很尴尬。

2 个答案:

答案 0 :(得分:1)

您可以使用:

node.geometry?.firstMaterial?.diffuse.contents = NSColor(srgbRed: 0, green: 0, blue: 0, alpha: 1.0)

通过这种方式,您可以使用自己的RGB值创建颜色,这样就可以使颜色变黑。最后一个参数alpha是不透明度的值,它需要为100才能看到颜色

答案 1 :(得分:1)

在您的情况下,更好的方法是使用以下语法:

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)