SKTexture を外部の画像ファイルにエクスポートできるようにしたいと考えています。次のコードを使用してこれを達成できました。ただし、ビューが不透明ではなく、すべての背景色がクリアに設定されている場合でも、アルファ チャネルが無視されるという重大な欠陥があります。
- (void)export:(CGRect)bounds texture:(SKTexture *)texture path:(NSString *)path{
UIGraphicsBeginImageContextWithOptions(bounds.size, NO, [UIScreen mainScreen].scale);
SKView *view = [[SKView alloc] initWithFrame:bounds];
SKScene *scene = [SKScene sceneWithSize:CGSizeMake(bounds.size.width, bounds.size.height)];
view.opaque = NO;
view.backgroundColor = [UIColor clearColor];
scene.backgroundColor = [UIColor clearColor];
SKSpriteNode *node = [SKSpriteNode spriteNodeWithTexture:texture];
node.position = CGPointMake(bounds.size.width/2, bounds.size.height/2);
[scene addChild:node];
[view presentScene:scene];
[view drawViewHierarchyInRect:bounds afterScreenUpdates:YES];
UIImage *snapshotImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[UIImagePNGRepresentation(snapshotImage) writeToFile:path atomically:YES];
}
アルファ値を含む画像をエクスポートできるようにするために、現在のソリューションに変更を加えることはできますか?
テクスチャを画像にエクスポートするためのより明確な方法はありますか?
意図:私がエクスポートしているテクスチャは、SKShapeNode の落とし穴を回避するために、SKShapeNode からのゲーム ロード時に現在生成されています。テクスチャ生成のオーバーヘッドを回避するために、それらを画像としてエクスポートし、代わりにこれらのテクスチャをテクスチャ アトラスから直接ロードしたいと考えています。