6

メインバンドル内で参照されるフォルダーに画像が保存されるランダムなモンスターのスプライトを作成しようとしています。

NSString* bundlePath = [[NSBundle mainBundle] bundlePath];
NSString* resourceFolderPath = [NSString stringWithFormat:@"%@/monsters", bundlePath];

NSArray* resourceFiles = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:resourceFolderPath  error:nil];

NSInteger randomFileIndex = arc4random() % [resourceFiles count];
NSString* randomFile = [resourceFiles objectAtIndex:randomFileIndex];

SKSpriteNode* tile = [SKSpriteNode spriteNodeWithImageNamed:randomFile];

上記のコードを実行すると、このエラーが発生します

SKTexture: Error loading image resource: "random_monster.png"

メインバンドルから画像を参照すると、コードが機能します。アプリ バンドル内のフォルダーからランダムな画像を使用して、それを SKSpriteNode に渡すにはどうすればよいですか?

4

2 に答える 2

0

実際、[SKSpriteNode spriteNodeWithImageNamed:] は、少なくとも OSX 10.9 では絶対パスを使用して機能します。私は、アプリ バンドルの外部のリソースにアクセスする必要があるプロジェクトに取り組んでおり、SKTexture や NSImage を必要とせずに仕事をしています。

試してみてください:D

NSString *imagePath = @"~/Desktop/test.png";
SKSpriteNode *test = [SKSpriteNode spriteNodeWithImageNamed:[imagePath stringByExpandingTildeInPath]];
于 2014-07-23T17:59:11.327 に答える