Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

게임 프로그래밍

[Unity] Custom TileMap Creator(2) 본문

프로그래밍/C#

[Unity] Custom TileMap Creator(2)

Junwe 2020. 3. 17. 18:39
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    public override void OnInspectorGUI()
    {
        base.OnInspectorGUI();
        grid = (Grid)target;
        EditorGUILayout.BeginHorizontal();
        string[] ObjectOptions = new string[grid.prefabsList.Length];
        string[] selectOptions = { "그리기""지우기" };
 
        for (int i = 0; i < ObjectOptions.Length; ++i)
        {
            if (grid.prefabsList[i] != null)
                ObjectOptions[i] = grid.prefabsList[i].name;
        }
      ObjectIndex = EditorGUILayout.Popup(grid.ObjectIndex, ObjectOptions);
      SelectIndex = EditorGUILayout.Popup(grid.SelectIndex, selectOptions);
 
        EditorGUILayout.EndHorizontal();
 
    }
 
cs

OnInspectorGUI는 인스펙터를 확장하는 함수입니다. OnSceneGUI함수를 보면 ObjectIndex와, SelectIndex를 사용하시는것을 볼수 있습니다.

ObjectIndex는 내가 배치할 타일 오브젝트 인덱스,

SelectIndex는 내가 그릴 모드(그리기, 지우기, 복사 등..)에 대한 인덱스 입니다.

Undo.RegisterCreatedObjectUndo(createObject, "create Object");
Undo.DestroyObjectImmediate(obj.gameObject);
Undo에 관한 내용입니다. 오브젝트를 그릴때와 삭제할때 각각 Undo 클래스를 사용합니다. 이는 유니티에서 제공하는 것이며 Undo스택에 정보를 넣어주시면 됩니다. 자세한 것은 Undo클래스에 대해 검색해 보시길 바랍니다.

다 완성됐다면 이렇게 prefablist 프러퍼티에 오브젝트를 넣어주면 해당 오브젝트들이 나올것 입니다. 그것을 선택하고 씬뷰에서 클릭, 드래그를 이용해서 타일맵을 제작하면 되겠습니다.

간단하게 타일맵을 그리는 설명만 하였는데 여러가지 기능들을 추가할수 있을것 입니다. 제공된 기능도 좋지만 역시 직접 만드는것이 좀더 자유로운 커스터마이징이 가능하다고 생각합니다.

 

'프로그래밍 > C#' 카테고리의 다른 글

[C#] Array to list  (0) 2020.04.01
[C#] 더블버퍼링이란?  (0) 2020.03.07
[C#] 확장 메세드  (0) 2020.03.06
[C#] Enum 반복문  (0) 2020.03.02
[C#] is, as에 대해서  (0) 2020.03.01
Comments