【Unity】手っ取り早くコンポーネントをアタッチするなら検索で

【Unity】手っ取り早くコンポーネントをアタッチするなら検索で

ゲームオブジェクトにはコンポーネントをアタッチしないと効果がないぞ!

と言われるくらいコンポーネントは大切なもの。

『ゲームオブジェクトはコンポーネントの入れ物』と公式で言ってるくらいなので、コンポーネントの理解を深めることはUnityの理解を深めること、と言っても過言ではありません。過言か。

このコンポーネントをアタッチする際、超手っ取り早くアタッチする方法として『検索』があるのですが、みんな使ってますかね?

「Rigidbodyは物理関係のコンポーネントだからPhysicsの下にあるはず……」とか階層を辿るのもありですが、親子関係をど忘れした時なんかに検索を使えると便利です。

 

環境

macOS 10.13 High Sierra

Unity2018.1.0f2

検索する方法

とても簡単です。『Inspector』ウィンドウから[Add Component]ボタンを押し、表示された検索窓でコンポーネント名の一部を入力するだけ。

検索窓があるのだポッター
検索窓があるのだポッター

 

以上。

 

……なんてすると今回超クッソ激烈に短い話で終わってしまうので、実際に検索するあたりもやってみましょうかね。

例としてRigidbodyを検索するケースを考えます。まずは何も考えず頭から検索。

一文字ごとに絞られる
一文字ごとに絞られる

 

入力するたびにコンポーネントが検索され、だんだんと絞り込まれていきます。『ri』までだとScriptとかGridといった言葉に一致しますが、『rig』まで行けばだいたい絞られています。

必ずしも先頭一致である必要はなく、コンポーネント名の中に文字列が含まれていれば候補にあがります。

検索の仕様について

実はUnityのC#部分に関するソースコードがGitHub公開されていて、参照専用ライセンスのもと、閲覧が可能です。あくまでUnityユーザーの勉強を目的とした公開のようで、再配布や改変はできないのですが、見るだけでもUnityの理解に繋がります。

この中のAddComponentに関しても上記のリポジトリで確認可能で、記述を読み取っていくと以下のような実装になっているっぽいです。あくまで私の理解ね。

  • スペース区切りで複数ワードの検索が可能
  • 検索時に小文字に置き換えるので大文字小文字の区別なし
  • 検索文字列が全て含まれる候補をあげる
  • 部分一致より先頭一致の方が上に表示される

あと実際に手を動かして検索してみたところ、メタキャラクタの処理などは無いようなので、『*』や『?』を使ったワイルドカード検索はできないようです。

スペースひと文字だけの時は全てのコンポーネントが表示されるため、アルファベット順で確認するときに使えます。

文字列の中にスペースがある時には、OR検索になります。

例えば、『rig』で検索すると『Rigidbody』『Rigidbody 2D』『Event Trigger』の3つが一致しますが、『ri(スペース)g』で検索すると『Grid』や『Spring Joint』など、候補が増えました。

スペース前後の文字の順番は問われないようなので、「コンポーネント名の一部、しかも飛び飛びでしか覚えてない……」なんて時には、覚えている文字をスペースで区切って検索するとヒットする可能性が高いです。

大きなプロジェクトでスクリプトが大量にある時には、こうした検索が使えると時間短縮になるはず。その前にAddComponentMenuで整理した方が楽かもだけど。

まとめ

コンポーネントの検索も多分みんな自然とやってるんじゃなかろうか、と思いつつも改めて取り上げてみました。

検索の仕様までは今まで気にしてなかったので、今回勉強になりました。

     

ゲーム開発の攻略チャートを作りました!

CTA-IMAGE

「ゲームを作ってみたいけど、何から手を付けていいか分からない!」


そんなお悩みをお持ちの方向けに、todoがアプリをリリースした経験を中心に、ゲーム作りの手順や考慮すべき点をまとめたe-bookを作成しました。ゲーム作りはそれ自体がゲームのように楽しいプロセスなので、「攻略チャート」と名付けています。


ゲームを作り始めた時にぶつかる壁である「何をしたら良いのか分からない」という悩みを吹き飛ばしましょう!