0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Prefab内でGizmoの選択をいい感じにする

Posted at

要旨

結論だけ言うとSelectionBaseAttributeをつけろです。

問題

OnDrawGizmosでギズモを描画する場合通常はそのギズモをクリックすると対象のオブジェクトが選択されます。
例えば

GizmoTest.cs
using UnityEngine;
using UnityEditor;

public class GizmoTest : MonoBehaviour {
	void OnDrawGizmos () {
		Gizmos.color = Color.red;
		Gizmos.DrawSphere(transform.position, 1);
	}
}

というコードがあり、

u1.PNG

でChildGizmoについてるとします。
この状態でsceneビューで赤い球をクリックするとChildGizmoが選択されます。

しかしここでParentをプレハブにしてみると、赤い球をクリックした時にParentが選ばれるようになってしまいます。
これはプレハブの仕様でプレハブ内のオブジェクトを選択するとプレハブのルートのオブジェクトが選ばれるようになっているためです。
この仕様自体知らなかったのとGizmoが絡んでいてGizmoのせいだと思っていたのでかなりハマってしまいました。

さて結論でも述べましたが、これを回避するにはSelectionBaseAttributeをつければ良いです。

GizmoTest.cs
using UnityEngine;
using UnityEditor;

[SelectionBase]
public class GizmoTest : MonoBehaviour {
	void OnDrawGizmos () {
		Gizmos.color = Color.red;
		Gizmos.DrawSphere(transform.position, 1);
	}
}

これでプレハブ化した状態でも無事赤い球をクリックした時にChildGizmoが選択されます。

0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?