【问题标题】:specifying scene's background color in SceneKit在 SceneKit 中指定场景的背景颜色
【发布时间】:2015-06-29 03:18:15
【问题描述】:

我正在尝试在场景出现之前指定屏幕的背景颜色(当前为黑色)。我搜索了文档,这就是我发现的:

var background: SCNMaterialProperty { get }

在场景其余部分之前渲染的背景。 (只读) 如果材质属性的内容对象为 nil,则 SceneKit 不会 在绘制场景的其余部分之前绘制任何背景。 (如果 场景呈现在 SCNView 实例中,视图的背景色 在场景内容后面可见。)

所以我去把内容发送到某种颜色。

scene.background.contents = UIColor.redColor()

但是,在场景渲染之前的那一刻,屏幕(它的 SCNView 部分)仍然是黑色的。我究竟做错了什么?也许背景属性不是我需要的?此外,我不太确定 a 是否可以进一步深入了解某些仅 get(bacground 是 getter)的属性,而不是像我在代码示例中所做的那样设置一些东西。谢谢回复

【问题讨论】:

    标签: ios scenekit scene


    【解决方案1】:

    尝试设置 SCNView 实例的 backgroundColor 属性。在我的代码中,我有以下内容:(某些代码可能不适用于您的情况,但它应该可以为您提供大致的思路。)

    if let scene = SCNScene(named: "myScene.scn") {
            ...
      // retrieve the SCNView
      let scnView = self.view as! SCNView
    
      // set the scene to the view
      scnView.scene = scene
    
      // configure the view
      scnView.backgroundColor = UIColor.redColor()
    }
    

    其中一些是从 Apple 的 SceneKit 游戏模板生成的。最后一行是重要的。我应该提到我正在使用 Xcode 7 beta 和 Swift 2,以防有一些细微的差异。

    编辑: 似乎我误解了这个问题。要在加载场景之前更改视图的背景颜色,请单击 Main.storyboard,然后在 Interface Builder 中,单击 View Controller 内的 View 属性。然后只需在 Inspector 选项卡中设置 Background color 属性。

    【讨论】:

    • 感谢您的回答。我的问题不在于设置 scnView 背景颜色。运行您的模拟,并在场景出现之前(正确设置了 scnView 背景颜色),有一段时间可见 UIView(我的屏幕的一部分是 UIView,另一部分是 SCNView)但 scnView 全黑。
    • 哦,我明白了。为此,单击您的 Main.storyboard,单击 View(在 Game View Controller 中)并在 Inspector 选项卡中将 Background 属性设置为您的颜色。
    • Nono,我的视图颜色是黄色的,正如我所希望的那样(我没有使用游戏视图控制器)。这是事件的顺序:黄色视图出现(我的屏幕下部)和 SCNView 是黑色的,之后 SCNView 呈现它的内容。
    • 我看不到你所看到的,因为我的场景覆盖了整个屏幕。我从来没有看到那个中间的“黑色”屏幕。祝你好运!
    猜你喜欢
    • 2022-10-07
    • 1970-01-01
    • 1970-01-01
    • 2011-11-01
    • 2016-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多