お知らせ

 

個人的に追いかけてる情報や当サイトからのお知らせをまとめます。

イベント情報

過去のイベントはこちらを参照。

ロックマンエグゼ合宿

ロックマンエグゼシリーズを振り返るゲーム合宿をまったり進行中です。最終回となる第6回を2016年内予定で検討中。過去分については特集を参照。

11月 152016
 

エクストルーパーズ!(挨拶)

告知が遅くなってしまいましたが、もちろん今年もやりますよ、対戦会。

概要

「エクストルーパーズ4周年記念対戦会」

開催日時:2016年11月22日(火)21:00~

※開始時間はあくまで目安
※終了時間は各自が気が済むまで

この時間に集まろうというだけのゆるいイベントなので、誰かが部屋を立ててたら、そこに入るだけでOKです。ルールも特に決めませんので、自由に楽しんでください。

誰でも参加できますが、対戦慣れしてない人は、私が以前書いた対戦まとめ記事を読んでおくといいと思います。

翌日の11月23日は毎年、勤労感謝の日で休みなので、どうぞ対戦漬けの夜を過ごしてくださいって感じですね。もしかしたら翌日も盛り上がるかもしれませんね。

配信について

今年もCaveTubeで垂れ流し配信しようと思います。だいぶ鈍っちゃいましたが。後日、録画を公開するということはありません。

連絡先

当日何かありましたら、下記の連絡先を使用してください。私がいるかどうかはTwitterで様子を見てください。

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
 

  • 2016/11/14
    • Android 4.4でのREAD_EXTERNAL_STORAGE対応、maxSdkVersionについて追記。
    • Android 6.0でのユーザによる権限の付け外しについて追記。
    • 掲載スクリプトの読み取り可能チェック処理でREAD_EXTERNAL_STORAGEを見ないように修正し、実行結果を更新。
    • 一部、誤植の修正。

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

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

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

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

Continue reading »

9月 042016
 

引き続きUnityの記事を書き溜めていたので放出。

Unityでシリアライズ可能なコレクションは、Listだけです。但し、当然ですが、型引数もシリアライズ可能型を指定してやる前提です。

C#のListはいわゆる配列リストってやつで、C++でいうvector、JavaでいうArrayListに相当します。C#にもArrayListは存在しますが、古い機能のため非ジェネリックです。

ともかく、Listは内部実装として配列を持つため、List<T>ならば、T型配列としてUnityがシリアライズしてくれるわけですね。Listだけシリアライズ可能なのはまあ納得です。

とはいえ、Listだけで事足りるかというと、LinkedList(連結リスト、線形リスト)やDictionary(ハッシュマップ)あたりは欲しい感じです。

ScriptableObjectやJsonUtilityでシリアライズ・デシリアライズするとき、ISerializationCallbackReceiverを実装していると、シリアライズ前、デシリアライズ後に決まったメソッドが呼ばれます。これを利用してコレクションをListに変換してシリアライズできます。公式ドキュメントでもこれを利用してDictionaryをシリアライズ・デシリアライズするサンプルが掲載されています。

※OnBeforeSerializeとOnAfterDeserializeを実装しますが、何故かOnBeforeSerializeに解説が集中しているのでそっちのリンクを掲載。

この場合、インスペクタを介したリアルタイムな編集はできませんが、永続化が目的ならばこれで十分でしょう。LinkedListやDictionaryをインスペクタで触れるようにするとむしろ怖い。

そんなこんなで、Unityで使用可能なC#のコレクションをISerializationCallbackReceiver実装クラスで一通りラップしてみたので、以下に公開します。

Continue reading »

9月 042016
 

なんだかんだUnityとの付き合いが多いので、メモがてらあんまりネット上で見なかったり見つけにくかったりする情報をまとめる感じで。

今回はenum型(列挙型、列挙体)のシリアライズについての話です。前回「C#のenumの使い方」の続きでもあります。本当は同じ日に仕上げるつもりでしたが、長くなったので分離しました。enumそのものの使い方は前回の記事にまとめておいたので、その知識は前提とします。

Continue reading »

8月 142016
 

仕事が忙しすぎて書きたかったネタが全然まとまらずに、技術関連の文章がまとまっていくアレ。

C#でのenumの使い方を簡単にまとめ。

私はWPFよりかは基本的にUnityでC#使ってます。Debug.Log()はUnityでのコンソール出力です。

public enum Type
{
    Invalid,
    A,
    B,
    C,
}

特に断りなければ、こんな定義のenum使ってると思ってください。

C#のenumは内部的には整数型です。値の割り当てを省略すれば、先頭では0が割り当てられ、以降は直前の定義に+1した値となります。C/C++でもおなじみのよくあるルールです。Javaはすっこんでいてください。

公式ドキュメントはこのあたり。言語機能そのものの説明はあまりしないので、詳しく知りたかったら自分で調べてねという感じで。

Continue reading »

6月 302016
 

遂に発売されましたね、Mighty No. 9(マイティーナンバーナイン、以下MN9)。

私の周囲では、既に多くの人が発売初週で難易度ノーマルをクリアしていました。それなりに難しいアクションゲームだと思いますが、さすがロックマンで鍛えられている人たちです。私もRAY編までクリア済みです。

MN9は、かつてのロックマンを思い起こさせるような、「死んで学んで乗り越えろ!」という古風なアクションゲームです。最近の軟弱なゲームと同じ遊び方をすると阿鼻叫喚となるわけです。

しかし、いたずらに難しくしているのではなくて、ちゃんと解法をいくらか用意して作られていて、理解して上達した時、現代的なハイスピードアクションに化けて、最高に気持ちよくなれるバランスに仕上がっています。そうそう、こんなアクションゲームが好きなんだ。

とはいえ、面食らった人も多いようですね。ロックマンとの違いに戸惑ってる人も多く、まさに賛否両論。しかし、私は好きです。

というわけで、いまMN9を楽しんでいる人たちが、集まって、MN9について語り合おうぜ!という場を設けます。

「Mighty No. 9非公式MTG」
時間:2016年7月2日(土)22:00~
配信場所:CaveTube

詳細は主催o.sさんの記事で。

発起人であるo.sさんに声をかけられ、私も喋ります。興味がありましたら、アイ・アム・マイティ!と叫ぶ勢いでチャットを盛り上げてくれたら幸いです。

こういうゲームこそ体験を共有すると楽しいと思うので是非。

Top