11月 142016
 

前回の記事「AndroidのpersistentDataPathがカオス」の続きです。

UnityでAndroidManifest.xmlを利用する方法のメモです。

前回の記事からの続き

※この節は前回の記事からの誘導なので、UnityでのAndroidManifest.xml利用方法を知りたいだけの人は読み飛ばしてください。

「外部」のアプリ固有パスにしかアクセスしないならば、Android 4.4(KitKat)以降は権限が不要ですが、それより前のバージョンも対象にする場合には、互換性のために権限を持たせることになるという話でした。しかし、これは無駄なので、特定のバージョン以降でその権限を要求しないようにする設定項目が追加されました。

ただ、やはりというか、残念なことにUnity側でそれを指定する設定は存在しないんですね。なので、もう少しAndroid側に寄って、自分で直接設定を書くことにしましょう。そのための手段ならUnityも提供しています。

Androidアプリの設定は、AndroidManifest.xmlというファイルにまとめられます。Unityから直接Androidアプリをビルドするときも、プロジェクトのルート直下に一時的に作られるTemp/StagingAreaディレクトリに、自動生成されたAndroidManifest.xmlがあることが確認できます。これだけ見ると、Androidプロジェクトを吐き出させて、AndroidManifest.xmlを編集してから、自前でAndroidのビルドを行わなければいけないようにも思えますが、そこまで不便ではありません。

これから任意のAndroidManifest.xmlをUnityで利用するための方法を説明していきます。

やりたいこと

WRITE_EXTERNAL_STORAGE権限を、Android 4.3以前では要求し、4.4以降では要求しない、という設定を指定したいです。

uses-permissionタグが権限を与える設定ですが、これの属性としてandroid:maxSdkVersionを与えてやればいいです。指定する値は、その権限が有効な最大APIレベルです。

上記記事にも書いてある通り、uses-sdkタグにも同名の属性がありますが、まったく別物なので、調べ物するときには気をつけてください。

WRITE_EXTERNAL_STORAGEをAndroid 4.4(API Level 19)より前のバージョンでのみ要求したい場合、API Level 18を最大として設定すればいいので、下記の設定をAndroidManifest.xmlに書きたいわけです。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="18" />

Continue reading »

10月 112016
 
  • 2017/12/23
    • 記憶違いの部分があったのでAndroid 2.2の説明を修正。今更。
    • 変更が多くなったので若干記述を整理。
  • 2017/05/06
    • targetSdkVersionの決定方法が間違っていたので修正。
  • 2017/02/06
    • Unity 5.3.6での仕様変更について追記。
  • 2016/11/14
    • Android 4.4でのREAD_EXTERNAL_STORAGE対応、maxSdkVersionについて追記。
    • Android 6.0でのユーザによる権限の付け外しについて追記。
    • 掲載スクリプトの読み取り可能チェック処理でREAD_EXTERNAL_STORAGEを見ないように修正し、実行結果を更新。
    • 一部、誤植の修正。

Unityで外部ファイルにデータを読み書きするとき、普通Application.persistentDataPathを使うと思うのですが、AndroidだけpersistentDataPathの返すパスが権限によって変わります。

これドキュメントに書かなきゃいけない重要事項だと思うんですが、全く触れられていない・・・。

詳しいことはこれから説明していきますが、やりたいことによっては必要な追加権限があるにも関わらず、それを設定したときには、persistentDataPathはセーブデータの保存先として信用できないという衝撃的な問題が存在します。Unityのバージョンは5.3.4f1です。

但し、Unity 5.3.6でpersistentDataPathおよびtemporaryCachePathがAndroid 4.4(コードネーム:KitKat、API Level 19)以降、「外部」を指すよう仕様変更となったそうです(リリースノート)。また混乱することを・・・。いずれにせよ、AndroidでpersistentDataPathを利用することは推奨しません。

以下、死ぬほど長いまとめ書きましたので、覚悟してください。

Continue reading »

8月 272014
 

※辞書データの最終更新:2014年11月12日
※2014年9月19日、AndroidとiOSでの使い方を追記しました。

2014年8月20日10時より配信開始された3DSウェア「蒼き雷霆(アームドブルー)ガンヴォルト」(1960円、3150ブロック)。蒼き雷霆(あおきらいてい)をアームドブルーと読ませる厨二病な作品ですが、それをオブラートに包んで(?)ジャンル名を「ライトノベル2Dアクション」としてます。

やたら括弧書きの多い固有名詞などを辞書データにまとめていただいたので、これを公開します。辞書データはGoogle日本語入力からエクスポートしたものです。インポートして使ってください。

この辞書データを使うことで、「あーむどぶるー」を「蒼き雷霆(アームドブルー)」に変換したりできます。異名は「“”」(かっこ)で囲むと厨二ポイント高いです。(例:“怒れる爆炎(バーントラース)”デイトナ)

追加してほしい単語があれば言ってください。

協力者:零式(れいしき)(@RTTN001)さん

Continue reading »

6月 182014
 

オトレンジャー面白いなー。面白いけど、最終話クリアしちゃったし、大型アップデート来ないかなぁ。

とまあ、エクストルーパーズコラボあたりから周囲のオトレン人口が増加して、よく話題にされるオトレンジャーですが、期間限定のイベントステージはまたやるのかいつやるのかもわからないので、動画に残していつでも見られるようにしたいなぁと思いました。ザコ戦の譜面とかわからなくなっちゃうので。

まあ、私がやらなくても、たぼちゃんがやってくれたんですけどね。素敵。

エクストルーパーズ、魔界村、ロックマン(第1弾)のコラボステージのプレイ動画が投稿されています。これはHDMI出力したものをキャプチャしたらしいです。

本題。

一応、私の方でも、iPhoneおよびiPad(以下、iOS端末)のゲームのプレイ動画を録画したり、配信したりするために、映像をキャプチャする方法を調べ、試してみたので、その情報をまとめます。

あくまでキャプチャするところまでの説明ですが、Ustreamでの配信方法は以前、記事にまとめました。

キャプチャの方法は2つに大別され、それぞれ説明します。

Continue reading »

9月 092013
 

ロックマンXoverのIDは CHJGVECZ ですのでよろしく!

ということが一番伝えたいことなので、これから始める人は招待IDに入れてくれると嬉しいです。フレンドも空きがあるうちは歓迎。あとはただの日記ですが、話題がやや多め。

下書き状態の記事がたまってきてるので消化しないと・・・。

Continue reading »

Top