position | ハンドルの位置 |
rotation | ハンドルの回転 |
size | ハンドルのサイズ |
capFunc | ハンドルを描画するために使用する関数 (例 Handles.RectangleCap)。 |
snap | スナップするグリッドサイズ |
Vector3 ユーザーのハンドル操作によって更新された値。ユーザーがハンドルを操作しない場合は、関数に渡した値と同じ値が返されます。
制約のない移動ハンドルを作成します。
これはすべての方向に自由に移動できます。シーンでスナップするためには Cmd キーを、コライダーに対して Raysnap するために Cmd + Shift キーを押したままにします。
Free Move handle in the Scene View.
注意: 画面サイズに対して固定サイズのハンドルを持ちたい場合、HandleUtility.GetHandleSize を使用します。
// Name this script "FreeMoveEditor" using UnityEngine; using UnityEditor;
[CustomEditor(typeof(FreeMove))] [CanEditMultipleObjects] public class FreeMoveEditor : Editor { public void OnSceneGUI() { FreeMove t = (target as FreeMove);
EditorGUI.BeginChangeCheck(); Vector3 pos = Handles.FreeMoveHandle(t.lookAtPoint, Quaternion.identity, .5f, new Vector3(.5f, .5f, .5f), Handles.RectangleCap); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(target, "Free Move LookAt Point"); t.lookAtPoint = pos; t.Update(); } } }
さらに、Handle にスクリプトをアタッチします。
// Name this script "FreeMove" using UnityEngine;
[ExecuteInEditMode] public class FreeMove : MonoBehaviour { public Vector3 lookAtPoint = Vector3.zero;
public void Update() { transform.LookAt(lookAtPoint); } }