이녀석의 역할
맵 로드 및 삭제
로드했을 때 Collision파일 추출 -> 갈 수 있는지 없는지 구분
이럴경우 ToString 형식에 맞춰서 다른 부분만 string으로 변경해줌.
이런식으로 해준다.
그리고 Load, Destroy부분은 이렇게 해주도록 하자.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MapManager
{
public Grid CurrentGrid { get; private set; }
public void LoadMap(int mapId)
{
DestroyMap();
string mapName = "Map_" + mapId.ToString("000");
GameObject go = Managers.Resource.Instantiate($"Map/{mapName}");
go.name = "Map";
GameObject collision = Util.FindChild(go, "Tilemap_Collision", true);
if (collision != null)
{
Debug.Log("Find! C");
collision.SetActive(false);
}
CurrentGrid =go.GetComponent<Grid>();
}
public void DestroyMap()
{
GameObject map = GameObject.Find("Map");
if (map != null)
{
GameObject.Destroy(map);
}
CurrentGrid = null;
}
}
프로퍼티로 이렇게 Grid를 가져올 수 있게 해주도록 하고
Scene에서
이거 삭제하고 씬자체에서 Map가져올 수 있도록 해보도록 하자.
지금 이까지 하면 잘 로드된다.
그리고
충돌을 볼 수? 있는 부분이 다른데 타일의 앵커? 부분을? 크기를 똑같이 늘려주는 부분을 해보도록 하자.
MapEditor이렇게 수정을 하고
Tool 눌러서 txt파일 갱신 ㄱㄱ
그리고
수정이 잘되었는데 이 파일을 실제 메모리에서 들고있도록 해주자.
그래서 이제 이녀석이 Map의 정보라서 이녀석을 이용해서
MapManager가 정보를 들고있도록 해주자.
냅 배니져에서 Load<>로 로드한다음에 StringReader라는 녀석이 있는데
문장 단위로 읽을 때 편리한 녀석임
txt.text를 꺼내주면 string으로 반환해준다.
반환한것을 한줄한줄 씩 파싱 해야함.
이렇게 37~40 번째 줄 한줄 씩 파싱한다음
for문 돌면서 1이면 true, 아니라면 false로 채워주면됨.
그리고 CanGo라는 함수를 만들어서
갈 수 있는지 없는지를 확인하고
이것을 PlayerController에서
실제로 옮기기 전에 MapManager한테 물어봐야한다.
그래서 이랬던 부분을
이렇게 수정을 해주도록 하자.
if문 막 안써도 됨 이래하면.
중간에
이부분 +1 안해주어서 에러 났었고
또 파일을 긁어오는 부분에서
y 좌표가
위로 갈 수록 커지기 때문에 int y가 저따구면 안되고
이렇게 되어야함.