Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 使用SKSpriteNode&;纹理图谱_Swift_Sprite Kit_Skspritenode - Fatal编程技术网

Swift 使用SKSpriteNode&;纹理图谱

Swift 使用SKSpriteNode&;纹理图谱,swift,sprite-kit,skspritenode,Swift,Sprite Kit,Skspritenode,我有一个SpriteKit游戏,里面有弹跳的球。尽管使用了纹理图集(位于我的.xcassets文件夹中的.spriteatlas文件夹),但每个球都有两次抽签 一些事实: 球是SKSpriteNode 每个球都是一个具有子节点的父节点(覆盖球的反向旋转以提供照明/阴影的错觉)。我们说的是每个球有2个节点 球的纹理预先加载,并通过TextureName(:)存储在内存中 我已经设置了view.ignoresSiblingOrder=true 没有SpriteKit背景图像会使球在另一个节点上渲染;

我有一个SpriteKit游戏,里面有弹跳的球。尽管使用了纹理图集(位于我的.xcassets文件夹中的.spriteatlas文件夹),但每个球都有两次抽签

一些事实:

  • 球是SKSpriteNode
  • 每个球都是一个具有子节点的父节点(覆盖球的反向旋转以提供照明/阴影的错觉)。我们说的是每个球有2个节点
  • 球的纹理预先加载,并通过
    TextureName(:)
    存储在内存中
  • 我已经设置了view.ignoresSiblingOrder=true
  • 没有SpriteKit背景图像会使球在另一个节点上渲染;背景是透明的。因此,球不会与其他内容重叠
  • zPosition
    未设置-不在父级上,也不在子级上
  • 根据我对场景渲染方式的了解,我希望在一次过程中看到所有父节点的渲染,并为子节点添加其他过程(尽管如此,由于我已将
    ignoresSiblingOrder
    设置为
    true
    ,因此这一点也很可疑)

    在这里,我不明白什么?为什么我的抽签数会随着更多的球被添加到场景中而急剧增加

    谢谢大家!

    更新:


    如果我不将子节点添加到球中,则无论有多少球,球的绘制计数都是1。因此,这肯定是子节点的问题,而不是父节点的问题。

    我通过在父节点和子节点上将
    zPosition
    设置为相同的值来解决问题

    parentNode.zPosition = 1.0
    childNode.zPosition = 1.0
    
    无论有多少个球,现在总共有2个球的平局