だらだら〜個人事業〜

HatenaDiaryから引っ越してきました。Githubもnyakagawanです。

Editorフォルダ内のスクリプト

Editorフォルダ内のMonoBehaviorを継承したScript。なんでEditorフォルダ内かと言うと編集時にしか使わないScriptだから。でもこれComponentにアタッチ出来なかった。ん〜、エラーが出る。で、エラー内容にしたがってEditorフォルダの外に出すとちゃんとアタッチ出来ると。
素直にEditorフォルダの外にだすのもありだけど。予めアタッチ済みのGameObjectをPrefabにしといたらどうか?と思ってやってみたけどGui上でもエラーが出てダメだった。
Editorフォルダの外にだすことの問題点はEditor側のクラス(スクリプト)が参照出来ないこと。確かに普通に考えればゲーム中のクラスがツールなどの開発時クラスに依存しちゃうのは無いわな。
うん、やっぱここに書いてあるわ。
http://unity3d.com/support/documentation/ScriptReference/index.Script_compilation_28Advanced29.html

All scripts that are compiled in this step have access to all scripts in the first group ("Standard Assets", "Pro Standard Assets" or "Plugins").

Editor時にもスクリプトの更新を呼ぶ?

試してないが、もしかしたら編集時にスクリプトのUpdateが呼ばれるには特定のディレクティブが必要かもしれん。
ExecuteInEditMode <これ
http://unity3d.com/support/documentation/ScriptReference/ExecuteInEditMode.html

まぁいいや、Editorフォルダの外にだしたれ

GameObject破棄の検知

ある(Editorフォルダ外の)GameObjectのヒエラルキーからの破棄(Destroy)を(Editorフォルダ内の)Windowクラスとかから検知する方法は無いか。
GameObjectにScriptをアタッチして、OnDestroy時にWindowクラスに通知すれば楽だが。Editorフォルダ外のクラスなのでアクセスすることが出来ない。SendMessage系を使えば出来るのかもしれないが。
…ビヘイビアクラス見たらGameObjectにOnDestroyとかコールバック無かった…ん〜マジでヒエラルキーからGameObject削除された瞬間って検知出来ないのか?…あ〜思い出した。そういえば前にも同じことで悩んでそういえばC#にはデストラクタっつーのがあるんだった、コレだー。ってなったんだ。
…あれ?デストラクタ呼ばれないんだけど…なぜ?でもたまに呼ばれてる気もする、意味分からん。ガベージコレクタとかそういうところが干渉してるんだろうか?
んー、まじヒエラルキー上からのGameObject削除ってどうやって検知するんだ…つかGameObject自身が外部からDestroyされたときってMessageもらう以外に動やって検知するんだこれ。

UnityForumにも見つからん

んー、まじヒエラルキー上からのGameObject削除ってどうやって検知するんだ…つかGameObject自身が外部からDestroyされたときってMessageもらう以外に動やって検知するんだこれ。

これです。質問すればいいんだろうけど英語が分かりません(’A`;;
抜本的にやり方を変えるしかないのかなぁ…うぁーん
ふと

ExecuteInEditMode <これ

これを思い出して試してみたが無意味だった。あとデストラクタはヒエラルキーから削除してから大分たった後に呼ばれてるからやっぱりガベージコレクタとかがあやしい。