ScenveView drawing

ㅋㅋ·2022년 9월 7일
0
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를 그리거나 선이나 큐브 같은 도형을 그릴 수 있음

0개의 댓글