• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

Tilemap.cellBounds에 관련해서 질문 있습니다.

23.05.05 12:20 작성 23.05.05 12:27 수정 조회수 576

0

제가 Tilemap을 아래와 같이 만들어 놨는데요,Tile.pngcellBounds에 break point를 잡아서 디버깅을 해보니 x.Max = 20, y.Max = 9가 나오더라구요. (제가 찍은 tilemap을 일일히 하나하나 세보니 x의 최대 좌표는 19고 y는 8인데도 말이죠.)cellBounds.png그렇다면 위 코드와 같이 반복문을 돌면 타일이 찍혀있지 않는 y = 9, x = 20 일 때도 반복문을 도니까 제가 만든 맵보다 가로 세로가 한 줄씩 늘어나게 출력됩니다. (아래 사진처럼 맨 윗줄과 오른쪽 줄에 0이 출력되서 나옵니다.)map.PNG

제가 생각하기에는 아래와 같이 코드를 짜야 알맞은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();
	}
}

답변 2

·

답변을 작성해보세요.

1

댕진형님의 프로필

댕진형

2023.10.01

https://forum.unity.com/threads/tilemap-compressbounds.859426/

여기서 해답 얻으실수 있습니다 :)

직관적이지 못해서 찾기 많이 어려우실거에요

감사합니다 같은 문제 겪어서 찾아봤는데 덕분에 해결했네요

1

유니티 툴 이슈 같은데 이미 칠한 부분을 삭제해도 저렇게 한줄/한칸이 남더라고요.
옵션중에 다시 컴팩트하게 있는 부분만으로 사이즈를 줄이는 기능이 있던 것 같은데
너무 오래 돼서 기억이 안 나네요. 일단 수동으로 맵을 고치시거나
코드에서 임시 처리를 해보시기 바랍니다. 아마 강의에서의 맵은 빈 줄/칸이 없을거에요.