작성
·
886
·
수정됨
0
제가 Tilemap을 아래와 같이 만들어 놨는데요,cellBounds에 break point를 잡아서 디버깅을 해보니 x.Max = 20, y.Max = 9가 나오더라구요. (제가 찍은 tilemap을 일일히 하나하나 세보니 x의 최대 좌표는 19고 y는 8인데도 말이죠.)그렇다면 위 코드와 같이 반복문을 돌면 타일이 찍혀있지 않는 y = 9, x = 20 일 때도 반복문을 도니까 제가 만든 맵보다 가로 세로가 한 줄씩 늘어나게 출력됩니다. (아래 사진처럼 맨 윗줄과 오른쪽 줄에 0이 출력되서 나옵니다.)
제가 생각하기에는 아래와 같이 코드를 짜야 알맞은xMin, xMax, yMin, yMax값과 map이 출력될 거 같은데 혹시 제가 틀린건가요?
using (var writer = File.CreateText($"Assets/Resources/Map/{go.name}.txt"))
{
writer.WriteLine(tmBase.cellBounds.xMin);
writer.WriteLine(tmBase.cellBounds.xMax - 1);
writer.WriteLine(tmBase.cellBounds.yMin);
writer.WriteLine(tmBase.cellBounds.yMax - 1);
for (int y = tmBase.cellBounds.yMax - 1; y >= tmBase.cellBounds.yMin; y--)
{
for (int x = tmBase.cellBounds.xMin; x < tmBase.cellBounds.xMax; x++)
{
TileBase tile = tm.GetTile(new Vector3Int(x, y, 0));
if (tile != null)
writer.Write("1");
else
writer.Write("0");
}
writer.WriteLine();
}
}
답변 3
1
https://forum.unity.com/threads/tilemap-compressbounds.859426/
여기서 해답 얻으실수 있습니다 :)
직관적이지 못해서 찾기 많이 어려우실거에요
1
유니티 툴 이슈 같은데 이미 칠한 부분을 삭제해도 저렇게 한줄/한칸이 남더라고요.
옵션중에 다시 컴팩트하게 있는 부분만으로 사이즈를 줄이는 기능이 있던 것 같은데
너무 오래 돼서 기억이 안 나네요. 일단 수동으로 맵을 고치시거나
코드에서 임시 처리를 해보시기 바랍니다. 아마 강의에서의 맵은 빈 줄/칸이 없을거에요.
0
유니티 메뉴얼에 정확한 설명이 없어서 저도 구글링 계속 해봤는데 아무래도 xMin, yMin은 inclusive, xMax, yMax는 exclusive가 맞는 것 같습니다.
감사합니다 같은 문제 겪어서 찾아봤는데 덕분에 해결했네요