首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在iOS框架中找不到纹理图集

在iOS框架中找不到纹理图集
EN

Stack Overflow用户
提问于 2016-11-02 14:49:48
回答 2查看 537关注 0票数 2

在我试图将我的资产(雪碧表)放入iOS框架之前,每件事情都很正常。我在使用Swift 3.0

为了减轻我的Xcode项目,我决定把我的资产:由TexturePacker生产的雪碧片放在一个框架中。当它们包括在主要项目中时,作为内部资源来源,一切都很好。但是当我把我的地图集放在一个框架里时,代码编译的很好,没有错误,这个应用程序在物理设备(一个iPad)上运行的很好,但是我有一个红十字会而不是我的精灵。我从控制台获得以下错误消息:

2016-11-02 15:35:02.166测试难题310:42458纹理地图集“统计”找不到。2016-11-02 15:35:02.392测试难题310:42458纹理地图集'Puzzle0‘找不到。2016-11-02 15:35:02.393测试难题310:42458纹理地图集'Puzzle1‘找不到。

等(直至41岁)

我已经将public关键字放在了我的类和所有从主项目调用的函数之前。举个例子..。

代码语言:javascript
复制
import SpriteKit


public class Statiques {

public init() {

}

// sprite names
let DANCING1 = "Dancing1"
let DANCING2 = "Dancing2"
let PUZZLE0  = "Puzzle0"
let PUZZLE1  = "Puzzle1"
let PUZZLE10 = "Puzzle10"
let PUZZLE11 = "Puzzle11"
let PUZZLE12 = "Puzzle12"
let PUZZLE13 = "Puzzle13"
let PUZZLE14 = "Puzzle14"
let PUZZLE15 = "Puzzle15"
let PUZZLE16 = "Puzzle16"
let PUZZLE17 = "Puzzle17"
let PUZZLE18 = "Puzzle18"
let PUZZLE19 = "Puzzle19"
let PUZZLE2  = "Puzzle2"
let PUZZLE20 = "Puzzle20"
let PUZZLE21 = "Puzzle21"
let PUZZLE22 = "Puzzle22"
let PUZZLE23 = "Puzzle23"
let PUZZLE24 = "Puzzle24"
let PUZZLE25 = "Puzzle25"
let PUZZLE26 = "Puzzle26"
let PUZZLE27 = "Puzzle27"
let PUZZLE28 = "Puzzle28"
let PUZZLE29 = "Puzzle29"
let PUZZLE3  = "Puzzle3"
let PUZZLE30 = "Puzzle30"
let PUZZLE31 = "Puzzle31"
let PUZZLE32 = "Puzzle32"
let PUZZLE33 = "Puzzle33"
let PUZZLE34 = "Puzzle34"
let PUZZLE35 = "Puzzle35"
let PUZZLE36 = "Puzzle36"
let PUZZLE37 = "Puzzle37"
let PUZZLE38 = "Puzzle38"
let PUZZLE39 = "Puzzle39"
let PUZZLE4  = "Puzzle4"
let PUZZLE40 = "Puzzle40"
let PUZZLE41 = "Puzzle41"
let PUZZLE5  = "Puzzle5"
let PUZZLE6  = "Puzzle6"
let PUZZLE7  = "Puzzle7"
let PUZZLE8  = "Puzzle8"
let PUZZLE9  = "Puzzle9"


// load texture atlas
let textureAtlas = SKTextureAtlas(named: "Statiques")


// individual texture objects
public func Dancing1() -> SKTexture { return textureAtlas.textureNamed(DANCING1) }
public func Dancing2() -> SKTexture { return textureAtlas.textureNamed(DANCING2) }
public func Puzzle0() -> SKTexture  { return textureAtlas.textureNamed(PUZZLE0) }
public func Puzzle1() -> SKTexture  { return textureAtlas.textureNamed(PUZZLE1) }
public func Puzzle10() -> SKTexture { return textureAtlas.textureNamed(PUZZLE10) }
public func Puzzle11() -> SKTexture { return textureAtlas.textureNamed(PUZZLE11) }
public func Puzzle12() -> SKTexture { return textureAtlas.textureNamed(PUZZLE12) }
public func Puzzle13() -> SKTexture { return textureAtlas.textureNamed(PUZZLE13) }
public func Puzzle14() -> SKTexture { return textureAtlas.textureNamed(PUZZLE14) }
public func Puzzle15() -> SKTexture { return textureAtlas.textureNamed(PUZZLE15) }
public func Puzzle16() -> SKTexture { return textureAtlas.textureNamed(PUZZLE16) }
public func Puzzle17() -> SKTexture { return textureAtlas.textureNamed(PUZZLE17) }
public func Puzzle18() -> SKTexture { return textureAtlas.textureNamed(PUZZLE18) }
public func Puzzle19() -> SKTexture { return textureAtlas.textureNamed(PUZZLE19) }
public func Puzzle2() -> SKTexture  { return textureAtlas.textureNamed(PUZZLE2) }
public func Puzzle20() -> SKTexture { return textureAtlas.textureNamed(PUZZLE20) }
public func Puzzle21() -> SKTexture { return textureAtlas.textureNamed(PUZZLE21) }
public func Puzzle22() -> SKTexture { return textureAtlas.textureNamed(PUZZLE22) }
public func Puzzle23() -> SKTexture { return textureAtlas.textureNamed(PUZZLE23) }
public func Puzzle24() -> SKTexture { return textureAtlas.textureNamed(PUZZLE24) }
public func Puzzle25() -> SKTexture { return textureAtlas.textureNamed(PUZZLE25) }
public func Puzzle26() -> SKTexture { return textureAtlas.textureNamed(PUZZLE26) }
public func Puzzle27() -> SKTexture { return textureAtlas.textureNamed(PUZZLE27) }
public func Puzzle28() -> SKTexture { return textureAtlas.textureNamed(PUZZLE28) }
public func Puzzle29() -> SKTexture { return textureAtlas.textureNamed(PUZZLE29) }
public func Puzzle3() -> SKTexture  { return textureAtlas.textureNamed(PUZZLE3) }
public func Puzzle30() -> SKTexture { return textureAtlas.textureNamed(PUZZLE30) }
public func Puzzle31() -> SKTexture { return textureAtlas.textureNamed(PUZZLE31) }
public func Puzzle32() -> SKTexture { return textureAtlas.textureNamed(PUZZLE32) }
public func Puzzle33() -> SKTexture { return textureAtlas.textureNamed(PUZZLE33) }
public func Puzzle34() -> SKTexture { return textureAtlas.textureNamed(PUZZLE34) }
public func Puzzle35() -> SKTexture { return textureAtlas.textureNamed(PUZZLE35) }
public func Puzzle36() -> SKTexture { return textureAtlas.textureNamed(PUZZLE36) }
public func Puzzle37() -> SKTexture { return textureAtlas.textureNamed(PUZZLE37) }
public func Puzzle38() -> SKTexture { return textureAtlas.textureNamed(PUZZLE38) }
public func Puzzle39() -> SKTexture { return textureAtlas.textureNamed(PUZZLE39) }
public func Puzzle4() -> SKTexture  { return textureAtlas.textureNamed(PUZZLE4) }
public func Puzzle40() -> SKTexture { return textureAtlas.textureNamed(PUZZLE40) }
public func Puzzle41() -> SKTexture { return textureAtlas.textureNamed(PUZZLE41) }
public func Puzzle5() -> SKTexture  { return textureAtlas.textureNamed(PUZZLE5) }
public func Puzzle6() -> SKTexture  { return textureAtlas.textureNamed(PUZZLE6) }
public func Puzzle7() -> SKTexture  { return textureAtlas.textureNamed(PUZZLE7) }
public func Puzzle8() -> SKTexture  { return textureAtlas.textureNamed(PUZZLE8) }
public func Puzzle9() -> SKTexture  { return textureAtlas.textureNamed(PUZZLE9) }


// texture arrays for animations
public func Dancing() -> [SKTexture] {
    return [
        Dancing1(),
        Dancing2()
    ]
}

public func Puzzle() -> [SKTexture] {
    return [
        Puzzle0(),
        Puzzle1(),
        Puzzle2(),
        Puzzle3(),
        Puzzle4(),
        Puzzle5(),
        Puzzle6(),
        Puzzle7(),
        Puzzle8(),
        Puzzle9(),
        Puzzle10(),
        Puzzle11(),
        Puzzle12(),
        Puzzle13(),
        Puzzle14(),
        Puzzle15(),
        Puzzle16(),
        Puzzle17(),
        Puzzle18(),
        Puzzle19(),
        Puzzle20(),
        Puzzle21(),
        Puzzle22(),
        Puzzle23(),
        Puzzle24(),
        Puzzle25(),
        Puzzle26(),
        Puzzle27(),
        Puzzle28(),
        Puzzle29(),
        Puzzle30(),
        Puzzle31(),
        Puzzle32(),
        Puzzle33(),
        Puzzle34(),
        Puzzle35(),
        Puzzle36(),
        Puzzle37(),
        Puzzle38(),
        Puzzle39(),
        Puzzle40(),
        Puzzle41()
    ]
}


}

在我的主要应用程序中,我用以下代码调用框架:

代码语言:javascript
复制
import Foundation
import SpriteKit
import AVFoundation
import Framework_Dancing


class GameScene1: GameScene {

// not useful code for this problem is missing here...

let sheet = Statiques()

let sprite_dancing1 = SKPuzzleAnim(texture: sheet.Dancing1())
let sprite_dancing2 = SKPuzzleAnim(texture: sheet.Dancing2())

我的框架是130 MB,让我认为它中包含了正确的资产,我没有从编译器那里得到错误,我缺少了什么?一旦我把资产放到主项目中,没有了框架,一切就都好了。

所有的地图集都是由TexturePacker制作的。

下面是我的Xcode项目的屏幕副本和框架中的代码:

谢谢你的帮忙,

皮埃尔

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-08 17:02:34

以下是我从TexturePacker的创建者那里得到的答复:

据我所知,SKTextureAtlas构造函数总是在主应用程序中搜索它的地图集文件,即使它是在框架代码中调用的。我不知道这是一个bug还是一个特性,你必须问一下苹果。对不起,但我不能帮你解决这个问题:-/问好,Joachim

票数 0
EN

Stack Overflow用户

发布于 2016-11-02 16:35:56

我相信您会发现错误,因为您正在寻找主项目中的资产,而不是框架项目中的资产。

例如,如果要显示存储在框架中的UIImage,则必须编写以下代码

代码语言:javascript
复制
let image = UIImage(named: "SomeImage", in: Bundle(identifier: "FrameworkBundleID"), compatibleWith: nil)

你可以在这里读到更多关于这个的内容。

cocoa touch framework assets not visible in App Project

问题是SKNode/SKSpriteNode等没有类似的初始化器,所以我不确定它是否会工作。

希望这能有所帮助

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40382937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档