无法找到资产

时间:2017-09-29 18:49:27

标签: ios sprite-kit

在xCode 9之前,当我想用​​图像创建UIImageView时,我会将图像拖到项目侧栏并创建一个具有该文件名称的UIImage。这很有效,一切都很好。

然而,使用Xcode 9,这将无法正常工作。它将无法找到该文件,即使它位于主包中。我需要做的是将图像放入Assets文件夹,然后它就能找到图像并在UIImageView中显示它。

同样,在使用Sprite Kit时,我会在桌面上创建一个带有.atlas扩展名的文件夹,将所有图像拖入其中,然后拖动项目中的.atlas文件夹。然后我创建一个名为.atlas文件夹的SKTextureAtlas,它有效。然而,使用Xcode 9,这再次无效。我会在控制台中找到'Texture Atlas'foo'无法找到'的消息。所以我转到Assets文件夹,单击添加图标并选择New Sprite Atlas,重命名该文件夹,然后将我的图像拖入其中。现在创建具有该名称的纹理图集。

我现在正在尝试做什么,并且遇到麻烦,正在使用init(filedNamed:“foo.mov”)创建一个SKVideoNode,正如您所猜测的,如果您将文件拖入项目中,这将不再有效边吧。所以我想也许我再次需要通过Assets文件夹以某种方式做到这一点。我发现当我将.mov文件添加到Assets文件夹时,它会被创建为“数据”类型(“数据”显示在Assets文件夹中其框的右上角)。我现在能做的是:

let d = NSDataAsset(name: "foo") // 'foo' is the .mov file in Assets
d.data // the underlying content

原来d不是nil,这是个好消息,但访问底层内容的唯一方法就是.data,而且你不能用数据创建一个SKVideoNode。我还想加载一个声音文件,我曾经这样做过:

let a = SKAction.playSoundFileNamed("bar.mp3", waitForCompletion: false)

但是我收到消息'错误加载声音资源:“bar.mp3”'。

2 个答案:

答案 0 :(得分:3)

检查您的资源是否正在捆绑。

进入项目设置并单击Build Phases选项卡,确保您的资源位于copy bundle resources部分 enter image description here

答案 1 :(得分:0)

我遇到了同样的问题,但是我的问题是将声音文件夹拖到XCode时没有选择“创建组”。加上“如果需要,复制项目”对我有用。