強火で進め このページをアンテナに追加 RSSフィード

整理された情報は こちら へどうぞ。

2011年06月04日

[][]「Yaminabe」のUnity記事がとても参考になる

akinowさんのブログ「Yaminabe」のUnity関連の記事がとても参考になります。お勧め!!

Yaminabe:Unity3d - livedoor Blog(ブログ)

http://blog.livedoor.jp/akinow/archives/cat_50045635.html

[][]メニューから独自の編集ウィンドウを表示させる方法

f:id:nakamura001:20110604214953p:image

Unityのエディタ拡張についての話。

メニューから独自の編集ウィンドウを表示させる方法。リファレンスはこちら。

Unity Script Reference – EditorWindow

http://unity3d.com/support/documentation/ScriptReference/EditorWindow.html

ここに記載されているサンプルをそのまま実行してみたのですが以下の様なエラーが出て上手く動作しませんでした。

Instance of MyWindow couldn't be created because there is no script with that name.
UnityEditor.EditorWindow:GetWindow(Type)
MyWindow:Init() (at Assets/Editor/NewBehaviourScript.js:11)
NullReferenceException: Object reference not set to an instance of an object
UnityEditor.EditorWindow.GetWindow (System.Type t, Boolean utility, System.String title, Boolean focus)
UnityEditor.EditorWindow.GetWindow (System.Type t)
MyWindow.Init () (at Assets/Editor/NewBehaviourScript.js:11)

試行錯誤の末、クラス名とファイル名が異なるのが問題だと突き止めました。

今回のサンプルではクラス名が MyWindow なのでJavaScriptのファイル名も MyWindow に変更し、以下の様にすれば正しく動作しました。

f:id:nakamura001:20110604214548p:image

[][]メニューに独自機能を追加する方法

Unityのエディタ拡張についての話。メニューに独自機能を追加する方法。

ファイルは Editor というフォルダを作り、その下に配置する必要が有ります。

f:id:nakamura001:20110604212033p:image

プログラムは JavaScript の場合はこの様な記述に成ります。今回のサンプルプログラムは選択したオブジェクト(GameObject)のPositionの値を0にリセットします。

【Test.js】

@MenuItem ("Custom/Reset Position")
static function ResetPosition () {
	for (var gameObj in Selection.gameObjects) {
		print ("Selection GameObjet : "+gameObj.name);
		gameObj.transform.position = Vector3(0, 0, 0);
	}
}

@MenuItem でメニューのどの位置に追加するかを指定します。

今回は Custom というメニューを追加し、その下の Reset Position を指定しました。

@MenuItem ("Custom/Reset Position")

この様に新たにメニューが追加されます。

f:id:nakamura001:20110604212534p:image

Unity Script Reference – MenuItem

http://unity3d.com/support/documentation/ScriptReference/MenuItem.html

同様に編集用のWindowを表示する EditorWindow というものも有るのですがこちらはサンプルをそのまま試してみても GetWindow() でデータ取得に失敗して上手く動きませんでした。

var window : MyWindow = EditorWindow.GetWindow (MyWindow);

この様なエラー文が出ます。

Instance of MyWindow couldn't be created because there is no script with that name.
UnityEditor.EditorWindow:GetWindow(Type)
MyWindow:Init() (at Assets/Editor/NewBehaviourScript.cs:14)
NullReferenceException: Object reference not set to an instance of an object
UnityEditor.EditorWindow.GetWindow (System.Type t, Boolean utility, System.String title, Boolean focus)
UnityEditor.EditorWindow.GetWindow (System.Type t)
MyWindow.Init () (at Assets/Editor/NewBehaviourScript.cs:14)

こちら使い方についてご存知の方はコメント欄で教えて貰えると嬉しいです。ちなみにUnityのバージョンは 3.3.0f3 です。

(追記)解決しました。解決方法はこちら

Unity Script Reference – EditorWindow

http://unity3d.com/support/documentation/ScriptReference/EditorWindow.html

iPhoneをマルチリモコン化する「UnityRemote」が凄い

f:id:nakamura001:20110604180157p:image

UnityRemoteと言っても3Dゲーム作成ツール「Unity」の「Unity Remote」とは違います。

こちらはiPhoneをマルチリモコン化する製品です。

iPhoneをリモコン化するものと言えばドックコネクタに装置を付けるタイプは知ってましたがこれは「360°全方向に赤外線を飛ばす装置」をiPhoneからBluetoothで接続して制御する仕組みみたいです。iPhoneに余計なものを付ける必要が無いのが凄く良いですね。

iPhone4がリモコンに早変わり!『Gear4 Unity Remote』レビュー(前編) - おShinoブ

http://blog.livedoor.jp/shino_b/archives/4191485.html

メーカーのサイトはこちら。

Gear4 UnityRemote Showcase:: UnityRemote

http://www.gear4.com/showcase-unity/

関連情報

iPhone/iPadを学習リモコンに変えるアダプタ - 強火で進め

http://d.hatena.ne.jp/nakamura001/20110219/1298094265