Unityでワンソースなシステム開発:GameObject.FindではなくSerializeFieldでオブジェクトを参照する

Posted on Posted in 趣味的なIT・ネットの話題

Unityでスクリプトを書いていて面倒なのが、他のオブジェクトへの参照ですね。僕はセオリー(?)通りにGameObject.Findでオブジェクトを見つけていたのですが、何でわざわざこんなことをしないといけないのかとブツブツ(頭の中で)言ってました。グローバルに存在しているオブジェクトなので名称で直接参照できたらいいのにとか。そんなときに違う話題の検索からこの記事を発見。

Unityで開発する際に気をつけておきたい5つの作法

この中の「GameObject.Findは使わない」で、SerializeFieldを使うとあり、これだと、自動ではないですが、名称からの参照切れは回避できますし、ソースがすっきりします。その分インスペクタがごちゃごちゃするでしょうから、メリットばかりではないですが、使う価値はありますね。

スクリーンショット 2015-11-02 10.18.58

 

実際にテストしてみると、ヒエラルキーからドラッグアンドドロップでオブジェクトを設定すると、スクリプトの中でオブジェクトを参照できました。

ひとつのプロジェクトの中で方針がばらばらになるとミスをしますので、今やっているものではGameObject.Findで通そうと思いますが、次のプロジェクトではSerializeFieldでやってみます。


Facebooktwittergoogle_pluspinterestlinkedinmail
納得したらすぐにシェア!