유니티 상당 바에 tools 추가
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
#if UNITY_EDITOR
using UnityEditor;
#endif
public class MapEditor
{
#if UNITY_EDITOR
[MenuItem("Tools/GenerateMap")]
private static void HelloWorld()
{
if (EditorUtility.DisplayDialog("Hello World", "Create?", "Create", "Cancel"))
{
new GameObject("Hello Wolrd");
}
}
#endif
}
이러면 메뉴에 Tools가 추가 되고 거기에 GenerateMap를 클릭하면 Hello World라는 게임 오브젝트를 만들건지 물어본다.
여기에 단축키를 추가 하고 싶으면
단축키의 약자는 다음과 같다. %(Ctrl), #(Shift) &(Alt)
아래의 코드를
[MenuItem("Tools/GenerateMap")] ==> [MenuItem("Tools/GenerateMap %#g")]
다음과 같이 바꾸면 된다.
위 코드는 ctrl + shift + g이다.
foreach (GameObject go in gameObjects)
{
Tilemap tm = Util.FindChild<Tilemap>(go, "Tilemap_Collision", true);
/*if (tm == null)
return;*/
using (var writer = File.CreateText($"Assets/Resource/Map/{go.name}.txt"))
{
writer.WriteLine(tm.cellBounds.xMin);
writer.WriteLine(tm.cellBounds.xMax);
writer.WriteLine(tm.cellBounds.yMin);
writer.WriteLine(tm.cellBounds.yMax);
for (int y = tm.cellBounds.yMax; y >= tm.cellBounds.yMin; y--)
{
for (int x = tm.cellBounds.xMin; x <= tm.cellBounds.xMax; x++)
{
TileBase tile = tm.GetTile(new Vector3Int(x, y, 0));
if (tile != null)
writer.Write("1");
else
writer.Write("0");
}
writer.WriteLine();
}
}
}
위에 코드는 타일맵이 있으면 0 1 파일을 만들어주는건데 내 파일에서는 만들어지지는 않는다.
반응형
'게임 개발 > Unity' 카테고리의 다른 글
[Unity] 커서 생성 혹은 감추기 (0) | 2024.05.29 |
---|---|
[Unity] Player Controller (0) | 2024.05.29 |
[UNITY] 코드로 Collider/isTrigger 설정 방법 (1) | 2023.12.02 |
[Unity] 2D에서 캐릭터 따라다니는 카메라 (0) | 2023.10.16 |
Unity 기초 함수 (0) | 2022.10.19 |