質問: Unityで作成中のアプリ内に、スクリーンショットを保存する機能を実装しています。 スクリーンショットは、以下の流れで作成しています。 1. Texture2D.ReadPixels() & Apply()で、読込&テクスチャを生成。 2. EncodeToPNG()で、byteデータを取得。 3. 2で取得したbyteデータをファイルに書き込み。 画像ファイルは生成できているのですが、 iOSの機種?によって、挙動が異なる状況に遭遇しました。 具体例: ・iPhone6で正常の向きの場合、iPhone5では上下が逆になる。 ・上下を反転させる処理を組み込んだ場合、 iPhone6で逆向きになり、iPhone5では、正常の向きになる。 サードパーティのライブラリ等は利用しておらず、UnityのAPIのみです。 また、アプリ内で、機種による分岐処理は含んでいないため、何が原因なのかがわからない状況です。 問題を引き起こしている原因、または解決方法等などを教えていただけないでしょうか? 動作環境 ・Unity 5.3.4 (ただし、記憶にあるかぎり、実装当初(2015/11頃)のバージョンから発生済) ・Mac
回答: ※原因がわかりましたので、自己回答です。 不具合ではなく、Unityの仕様でした。 Build Settingsで、"Auto Graphics API"が有効だったため、 実機に出力した際は、 iPhone6 - Metal iPhone5s - OpengGLES という異なる動作になり、報告した状況が発生していました。 "Auto Graphics API"のチェックを外して、 OpenGLES3 OpenGLES2 を指定することで、現象が発生しなくなることを確認、対応できました。