[Unity] シーンビューのカスタム化に関するメモ

2020/09/24に公開

1. シーンビューのサイズを取得

// シーンビューのスクリーン幅を取得
var width = UnityEngine.Screen.width;

// シーンビューのスクリーン高さを取得
var height = UnityEngine.Screen.height;

2. 「World 座標」を「スクリーン座標」に変換

// スクリーン座標を取得する
var screenPos = UnityEngine.RectTransformUtility.WorldToScreenPoint(worldCamera, worldPos);

3. 「スクリーン座標」を「World 座標」に変換

※ 書きかけメモ
UnityEngine.RectTransformUtility.ScreenPointToRay(worldCamera, screenPos) メソッドを使用する

4. Hierarchy 上のオブジェクトを削除

シーンビューで動作するスクリプト上では GameObject.DestroyImmediate メソッドを使用する。

なお、通常使う GameObject.Destroy メソッドを使用すると以下のエラーメッセージが表示される。

Destroy may not be called from edit mode! Use DestroyImmediate instead.

Discussion