0

我在 iOS 中使用 SpriteKit 已经有一段时间了;现在我正在为 Mac 开发一个应用程序。

我像往常一样设置了纹理图集:

  1. 为项目和目标启用纹理图集生成(我从“基于文档的应用程序”模板开始,而不是“SpriteKit 游戏”。它有不同的构建设置)。
  2. 将所有单独的纹理图像文件拖到一个文件夹中,
  3. 将文件夹重命名为"Something.atlas" ,
  4. 将文件夹添加到项目中,
  5. 在运行时,按名称(即[SKTextureAtlas atlasNamed:@"Something"];)创建图集。
  6. 按名称(即[_atlas textureNamed:@"MyTexture"];)获取单个“纹理”并使用它们创建SKSpriteNode实例。

我正在异步预加载图集,但永远不会调用完成处理程序(请参阅注释):

_atlas = [SKTextureAtlas atlasNamed:@"Something"];

        if (!_atlas) {
            NSLog(@"Error: Failed to create atlas!");
            // This line doesn't execute, so atlas is not nil.
        }

        [_atlas preloadWithCompletionHandler:^(void){
            // This block doesn't get executed either, 
            // so atlas loading somehow fails...

            NSLog(@"Atlas Loaded!");

            [self createSprites];
        }];

当我检查构建产品的包内容(例如MyApp.app)时,在资源子目录中我可以看到 atlas 文件夹(“Something.atlasc”),但它只包含一个没有条目的 .plist 文件,并且图像资源无处可寻……那又是什么呢?

4

1 回答 1

1

实际上,它毕竟不是工作空间。复制到桌面时,相同的工作区/项目可以正常构建。

原因似乎是,项目文件夹路径中的一个中间目录的名称是日文字符。我测试如下:

  1. 将文件夹名称更改为英文 -> 清理构建文件夹 -> 构建 -> 确定
  2. 将文件夹名称改回日文 -> 清理构建文件夹 -> 构建 -> Atlas 损坏
  3. 将文件夹名称改回英文 -> 清理构建文件夹 -> 构建 -> 确定

...(你看到模式)...

我想知道为什么以及如何这只影响纹理图集的导出,而没有其他影响。

希望这次经历可以帮助将来的其他人...

我也会在 Apple 更新错误报告。

更新:根据 Apple 的说法,从 iOS 8 beta 2 (Build 12A4297e) 开始,该问题已得到解决。我还没有机会检查(我正在从事的项目是一个没有起飞的原型,我决定改名解决方案)。无论如何,iOS 8 现在是最终版本。

于 2014-05-30T09:17:01.160 回答