SKSpriteNode 不显示

Posted

技术标签:

【中文标题】SKSpriteNode 不显示【英文标题】:SKSpriteNode Not Showing 【发布时间】:2019-03-02 21:01:02 【问题描述】:

所以我有这个代码:

func addSprites() 
    for row in 0..<GameScene.rows 
      for col in 0..<GameScene.cols 
        let node = grid[row][col]
        if node != nil 
          addChild(node!)
          node?.position = CGPoint(x: (view!.frame.width/CGFloat(GameScene.cols))*CGFloat(col), y: (view!.frame.height/CGFloat(GameScene.rows))*CGFloat(row))
          print(node?.position)
        
      
    
  

并且网格数组有 SKSpriteNodes,当我打印它时会显示

这很好,因为我有SKSpriteNode

addSprites() 输出

Optional((0.0, 207.0))
Optional((59.733333587646484, 207.0))
Optional((119.46666717529297, 207.0))
Optional((179.1999969482422, 207.0))
Optional((238.93333435058594, 207.0))
Optional((298.6666564941406, 207.0))
Optional((358.3999938964844, 207.0))
Optional((418.1333312988281, 207.0))
Optional((477.8666687011719, 207.0))
Optional((537.5999755859375, 207.0))
Optional((597.3333129882812, 207.0))
Optional((657.066650390625, 207.0))
Optional((716.7999877929688, 207.0))
Optional((776.5333251953125, 207.0))
Optional((836.2666625976562, 207.0))

它对应于节点的位置。但是在这里看到没有精灵显示:

当我在touchesBegan 方法中打印触摸位置并看到点时,即使点完全相同,精灵也不会显示。我怎样才能解决这个问题?我还在GameViewController 中尝试了scene.scaleMode = .resizeFill,但这并没有解决问题。

【问题讨论】:

什么精灵?我在你的代码中也没有看到。 @ElTomato 精灵在网格数组中,它们的所有位置都被打印出来了 @ElTomato 网格也已打印出来 我也看到过节点这个词。我不知道那是什么。而且我不知道你是如何创建它的。 @ElTomato let node = grid[row][col] 【参考方案1】:

我知道了,但是我不确定它为什么会起作用,但是我将锚点更改为 (0,0) 并且所有精灵都显示了!!

【讨论】:

以上是关于SKSpriteNode 不显示的主要内容,如果未能解决你的问题,请参考以下文章

Swift 2.0 - SKSpriteNode 的 SKTexture 有时不显示

Swift SpriteKit SKSpriteNode 的“有时”不显示

SKSpriteNode对象初始化在iPhone 6 plus中显示不正确的分析及解决

SKSpriteNode 没有正确缩放

添加时 SKSpriteNode 未显示

为啥我的 SKSpriteNode 没有以图像的默认分辨率显示?