public class CustomEditorTest : Editor
{
CustomScript target;
...
private void OnEnable()
{
SceneView.duringSceneGui += OnSceneGUI;
...
}
private void OnDisable()
{
SceneView.duringSceneGui -= OnSceneGUI;
}
}
에디터를 수정할 수 있도록 하는 클래스를 생성
Enable, Disable 시 콜백 함수를 추가, 삭제하도록 한다.
private void OnSceneGUI(SceneView obj)
{
var otherObjects = FindObjectsOfType<CustomScript>();
Handles.color = Color.red;
for (int i = 0; i < otherObjects.Length; i++)
{
if (this.target != otherObjects[i])
{
var position = otherObjects[i].transform.position;
Handles.DrawLine(this.target.transform.position, position);
Handles.DrawWireCube(position, Vector3.one);
}
}
Handles.color = Color.white;
Handles.BeginGUI();
{
if (GUILayout.Button("Move up"))
{
target.transform.position += Vector3.up;
}
if (GUILayout.Button("Move down"))
{
target.transform.position += Vector3.down;
}
}
Handles.EndGUI();
}
OnSceneGUI는 SceneView 데이터를 받는 함수로 구현해야 한다.
Handles는 SceneView에서 UI를 그리그 위한 클래스이며,
해당 클래스를 통해 버튼과 GUI를 그리거나 선이나 큐브 같은 도형을 그릴 수 있음