以编程方式使用资产创建SKSpriteNode

时间:2017-01-24 03:09:17

标签: swift sprite-kit swift3 skspritenode asset-catalog

我尝试以编程方式创建SKSpriteNode并为其提供位于Assets.xcassets文件夹中的纹理。我认为这将是一个基本程序,但我似乎遇到了很多麻烦。

作为参考,这是我的资产目录,其中包含基础资产,我试图设置为SKSpriteNode

Asset catalog with ground asset

这是制作精灵节点的代码:

    sprite.texture = SKTexture(image: UIImage(named: spriteName)!)

    sprite.anchorPoint = CGPoint(x: 0, y: 1)

    sprite.position = CGPoint(x: 0, y: 0)

    referenceNode.addChild(sprite)

变量" spriteName"在第一行是String" ground"进入它。然而,当我加载游戏时,地面缺失。为了确保节点实际存在,我注释掉纹理代码并给它们大小和可见颜色。这样就解决了,所以我知道问题肯定在资产参考中,而不是在代码逻辑中。

非常感谢正确方向的任何一点。如果需要更多信息,请尽可能具体询问:)

谢谢, 马修

修改

我原来的问题可能有点过于复杂。用简单的术语来改写:

我的资产库中有一个名为ground的资产。但是,当我使用此代码设置SKSpriteNode的纹理时......

sprite.texture = SKTexture(image: UIImage(named: "ground")!)

纹理没有显示在app中。我的问题:如何正确引用资产库中的图像?

1 个答案:

答案 0 :(得分:2)

您似乎也需要明确设置尺寸:

sprite.texture = SKTexture(imageNamed: "myImage1")
sprite.size = sprite.texture!.size()

..或者您可以在init中指定图像:

let sprite = SKSpriteNode(imageNamed: "myImage1")