West Hill 開発メモ

AndroidJavaClassAndroidJavaObjectを使えば、UnityからActivityやJavaのObjectにアクセス出来るのですが、Androidでは別スレッドからUIを操作することができません。
UI操作を行いたい場合はActivity.runOnUiThreadを使用します。

これをUnityから使いたい場合にはAndroidJavaRunnableを使用して、
指定したメソッドをRunnableとしてUIスレッドに投げます。

リファレンスのコードではコンパイルエラーになってしまいますが、
AndroidJavaRunnableのnew宣言が抜けているだけなので以下のようにすれば使えます。


これならプラグイン作ったりActivityをオーバーライドしないで済むので手軽で便利です。

このエントリーをはてなブックマークに追加 Clip to Evernote

Unity4.5からはコルーチンの停止に使うStopCoroutineメソッドで引数にIEnumratorを指定できるようになりました。
今まではStopAllCoroutinesで全部止めるか、StopCoroutineでメソッド名指定で止めるしか無かったので、便利になりました。
(※ただし後者はStartCoroutineをメソッド名指定で動かした場合に限る)
 
DoWorkCoroutineというコルーチンメソッドがあるとして、
こんな風にIEnumratorの参照を保持して利用します。
// IEnumerator保持
IEnumerator routineWork = DoWorkCoroutine ();

// コルーチン開始
StartCoroutine (routineWork);

// コルーチン停止
StopCoroutine (routineWork);
ただし、これで停止したコルーチンを同じIEnumratorを指定して再スタートさせた場合は
コルーチンの途中から再開してしまうので注意が必要です。
(※既に末尾まで終了している場合には何も起きないようにみえる)

なので、コルーチンを始めから再スタートさせたい場合には以下のようにする必要があります。
// IEnumerator保持
IEnumerator routineWork = DoWorkCoroutine ();

// コルーチン開始
StartCoroutine (routineWork);

// コルーチン停止
StopCoroutine (routineWork);

// コルーチン再スタート
// 同じIEnumeratorを指定すると途中から再開されてしまうので再取得する
routineWork = DoWorkCoroutine ();
StartCoroutine (routineWork);
逆に、IEnumratorの参照を取りなおさなければ
任意のコルーチンを途中で一時停止・途中から再開させる用途で使えます。

参照:MonoBehaviour.StopCoroutine

このエントリーをはてなブックマークに追加 Clip to Evernote

Unity Asset Storeにて、2D弾幕が簡単に作れるアセット「Uni Bullet Hell」をリリースしました。



コンポーネントを追加してインスペクタ上でパラメタをいじるだけで好きな弾幕が撃てます。
シューティングゲームやシューティング以外のゲームでも、
弾幕出したいなって時に使えると思いますので、よろしくお願いします。

弾幕パターン例 >> WebPlayerサンプル
チュートリアル&リファレンス >> Uni Bullet Hellサポート
ss_01
※当アセットに使用している画像やサウンドは、
Unity Japanチュートリアルのものを使用させてもらっています。 
>> 2D Shooting Game Tutorial (Unity Japan)

このエントリーをはてなブックマークに追加 Clip to Evernote

このページのトップヘ