まず、このブログの記事、かなり詳しく書かれていると思いますよ。
Xcodeの知識がないため理解が難しかったとのことですが、どのあたりで躓きましたか?
.mmの拡張子を持った任意のファイルをつくれば良いだけで、Objective-C++のコードは提示されているものをそのまま使えば用を為すはずです。
とはいえコードの意味が分からないと記事を読んでどうにかするのも難しそうなので、やってることを簡単に解説してみます。
lang
1// C言語から呼べる関数として _WriteImageToAlbum を定義します。
2extern "C" void _WriteImageToAlbum (const char* path)
3{
4 // 引数にとったpathのファイルを読み出し、iOSで使われる画像のオブジェクトを生成します
5 UIImage *image = [UIImage imageWithContentsOfFile:[NSString stringWithUTF8String:path]];
6 // iOSの写真ライブラリ管理用オブジェクトを生成します
7 ALAssetsLibrary *library = [[[ALAssetsLibrary alloc] init] autorelease];
8 // この後の処理の結果を受け取るために辞書(ハッシュ)をつくります。 ただ、これはエラーが出ないようにつくってあるだけで使ってないみたいですね。
9 NSMutableDictionary *metadata = [[[NSMutableDictionary alloc] init] autorelease];
10 // 上でつくった画像オブジェクトを写真ライブラリに保存します
11 [library writeImageToSavedPhotosAlbum:image.CGImage metadata:metadata completionBlock:^(NSURL *assetURL, NSError *error) {
12 // ↓に書いてあるとおり、Unity側にコールバック、処理を戻してやります
13 // 書き込み終了後、Unity側へコールバック。
14 UnitySendMessage("CaptureScreenShot", "DidImageWriteToAlbum", [error.description UTF8String]);
15 }];
16}
17
18// システムのシャッター音を鳴らす。
19extern "C" void _PlaySystemShutterSound ()
20{
21 // NOTE:
22 // マナーモードや本体音量に左右されずに鳴る。
23 AudioServicesPlaySystemSound(1108);
24}
こんなところで、どうでしょう?
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/04/17 05:59
2015/05/11 06:12