Mac SpriteKit - 无法在编译时创建纹理图集

时间:2014-05-30 06:25:31

标签: objective-c macos sprite-kit sktextureatlas

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

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

  1. 项目和目标启用纹理图集生成(我从“基于文档的应用程序”模板开始,而不是“SpriteKit Game”。它具有不同的构建设置。)
  2. 将所有单个纹理图像文件拖到文件夹中
  3. 将文件夹重命名为“Something.atlas”
  4. 将文件夹添加到项目
  5. 在运行时,按名称创建地图集(即[SKTextureAtlas atlasNamed:@"Something"];)。
  6. 按名称获取单个“纹理”(即[_atlas textureNamed:@"MyTexture"];)并使用它们创建SKSpriteNode个实例。
  7. 我正在异步预加载地图集,但完成处理程序永远不会被调用(参见注释):

    _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 )时,在resources子目录中我可以看到atlas文件夹(“Something.atlasc”),但它只包含没有条目的.plist文件,图像资源无处可寻......那么是什么给出了?

1 个答案:

答案 0 :(得分:1)

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

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

  1. 将文件夹名称更改为英语 - > clean build folder - >构建 - >行
  2. 将文件夹名称更改回日语 - > clean build folder - >构建 - > Atlas坏了
  3. 将文件夹名称更改回英语 - > clean build folder - >构建 - >行
  4. ...(你看到模式)......

    我想知道为什么 这个只影响纹理地图集的导出,而不是其他任何内容。

    希望这种经历能够帮助其他人......

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

    更新:根据Apple的说法,问题已经从iOS 8 beta 2(Build 12A4297e)解决。我没有机会检查(我正在工作的项目是一个没有起飞的原型,我选择了名称更改解决方案)。无论如何,iOS 8现在是最终的。