2014年3月30日日曜日

【Unity】Unity小ネタ② オブジェクトの検索

■オブジェクトの検索

C#にてオブジェクトを検索する方法として自分は主に以下の記述方法を使用しています。

①普通にオブジェクト名で検索
【C#】
var  targetGO = GameObject.Find("オブジェクト名");


②タグで検索
【C#】
var targetGOs = GameObject.FindGameObjectsWithTag  ("タグ名");


タグで検索をした場合、同じタグを持つ複数のオブジェクトがある場合は複数のオブジェクトが検索されます。
その場合の取得方法は以下のように行います。
(同じタグを持つオブジェクトを一括で削除する関数です。)


【C#】
/// <summary>
/// 特定のタグのゲームオブジェクトを一括削除
/// </summary>
public static void DestroyObjectWithTag(string name)
{
  var targetGOs = GameObject.FindGameObjectsWithTag(name);

  foreach (var target in targetGOs)
  {
  GameManager.Destroy(target);
  }
}



因みに検索はそこそこ処理が重いらしくUpdate()内などでは使用しないほうが良いらしいです。





2014年3月29日土曜日

【Unity】Unity小ネタ① Hierarchyのフォルダ分け

■Hierarchyのフォルダ分け

Hierarchyにはフォルダという概念はないのですが、オブジェクトをグループごとに管理(フォルダ分け)したいときがあります。
そんなときは空のオブジェクトを作成し、その配下にオブジェクトを配置するといいです。

①メニューバーからGameObject→Create EmptyにてGameObjectを作成。




②その中に書くオブジェクトをドラック&ドロップ。




③オブジェクトが階層表示。





もちろん親オブジェクトをコンテナ化(Projectにドラック&ドロップ)すると子オブジェクトも一緒にコンテナ化されます。

ちなみに子オブジェクトから親オブジェクトを参照する場合は以下の方法で参照できます。

【C#】
GameObject  parent =  gameobject.transform.parent.gameObject;