swift - 以编程方式使用 Assets 创建 SKSpriteNode

标签 swift sprite-kit swift3 skspritenode asset-catalog

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

作为引用,这里是我的 Assets 目录,其中包含我尝试设置为 SKSpriteNode 的地面 Assets :

Asset catalog with ground asset

这是制作 Sprite 节点的代码:

    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”将字符串“ground”传递到其中。然而,当我加载游戏时,地面缺失了。为了确保节点确实存在,我注释掉了纹理代码,并只给出了它们的大小和可见颜色。这解决了,所以我知道问题肯定出在 Assets 引用中,而不是代码逻辑中。

任何正确方向的观点都将不胜感激。如果需要更多信息,请尽可能具体询问:)

谢谢, 马修

编辑:

我原来的问题可能有点太复杂了。用更简单的术语重新表述:

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

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

纹理未显示在应用程序中。我的问题:如何正确引用资源库中的图像?

最佳答案

看来您也需要显式设置大小:

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

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

let sprite = SKSpriteNode(imageNamed: "myImage1")

关于swift - 以编程方式使用 Assets 创建 SKSpriteNode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41819373/

相关文章:

swift - SKAction.runBlock 按顺序运行时出现问题

swift - Swift switch 语句可以在 case 中有另一个 switch 吗?

ios - NSEntityDescription 为零

swift - 如何在 Swift 中重复链接动画?

ios - SKCropNode 在 Xcode 7 + Swift 2 中无法正常工作

ios - SKAction.waitForDuration 在 SpriteKit 中不起作用

ios - 生成导致丢帧的新节点 [SpriteKit]

size - 如何对 SKNode 进行子类化以将其初始化为预定大小

github - 如何使用 swift 3 在 iOS 中隐藏之前的日期和月份?

swift - 根据该标题内的 Collection View 动态内容显示 collectionView 的标题大小不起作用