为什么我的图像有时不会在模拟器中显示?

时间:2018-04-02 14:26:38

标签: ios swift sprite-kit

我正在制作一款只有几个屏幕的游戏。我在场景中添加了一些精灵纹理,如下所示。

为什么我的图像不能在模拟器中持续加载?

仪表板场景文件

仪表板模拟器试用1

这是在iOS模拟器中加载应用程序的一次尝试。正如您所看到的,此实例中未从上面的spritekit场景文件中加载了许多图像。

仪表板模拟器试用2

下面是在模拟器中加载仪表板场景的另一种尝试。生成的视图完全不同,但没有更改代码。我不明白渲染的图像是如何变化的。

2 个答案:

答案 0 :(得分:1)

来自Apple

  

默认值为0.0。正z轴向观察者投射,使得具有较大z位置值的节点更靠近观察者。渲染节点树时,计算每个节点的高度(以绝对坐标),然后树中的所有节点从最小的z位置值渲染到最大的z位置值。如果多个节点共享相同的z位置,则对这些节点进行排序,以便在子节点之前绘制父节点,并按照它们在父节点的子数组中出现的顺序呈现兄弟节点。命中测试的顺序相反。

     

SKView类的ignoresSiblingOrder属性控制是否为同一z位置的节点启用节点排序。

基本上,通过将它们全部设置为0,您可以随机选择按照您希望的顺序进行布局。您可以尝试设置ignoresSiblingOrder,看看您是否确实按照正确的顺序将它们放入代码中,并查看它们是否以正确的顺序显示。

但是我强烈建议你将它们置于结构化层次z次序中而不是这样做。

即。

background.zPosition = 0
hero.zPosition = 1
scoreLabel.zPosition = 500

再次来自Apple关于ignoresSiblingOrder

  

默认值为false,这意味着当多个节点共享相同的z位置时,将按确定的顺序对这些节点进行排序和呈现。父母在他们的孩子面前呈现,兄弟姐妹按照数组顺序呈现。当此属性设置为true时,在确定渲染顺序时将忽略树中节点的位置。在相同z位置处的节点的渲染顺序是任意的,并且可以在每次渲染新帧时改变。当忽略兄弟和父顺序时,SpriteKit会应用其他优化来提高渲染性能。如果需要以特定和确定的顺序呈现节点,则必须设置这些节点的z位置。

答案 1 :(得分:0)

  • 确保每张图片都可见:

    myImage.alpha = 1
    
  • 您已正确输入完全(大写字母,空格等)正确的图像名称

  • 图片位于资源文件夹

  • 您的图片未被其他图片压缩