먼저이 전체 소설을 읽는 데별로 관심이없는 사람이면 누구나이 질문에 코드가 없습니다.이 이론은 순전히 이론적 인 것입니다. 나는 내 전화를 들고 있는데,이 상황에 가장 적합하고 가장 쉬운 방법에 대한 질문입니다.타일 맵에 대한 int [,] 배열 또는 타일 [,] 배열
그래서 나는 기본적인 Tilemap 엔진 *이되어야한다고 생각하며 노력하고 있습니다. 그리고 나는 나의 접근 방식에 대해 의심 스럽습니다. 나는 이미 여러 번 그것을 다시 썼다. 그것이 너무 오래 걸린 것은 아니지만, 프로젝트는 여전히 기저귀에 있다고 말할 수 있습니다.
기본적으로 Sprite 클래스에는 string name, int Id, texture2d 텍스처가 있습니다.
그리고 Sprite 클래스에서 파생 된 Tile 클래스가 생성자에 추가되어 있습니다. Int X, int Y, bool walkable.
첫 번째 시도에서 2D 정수 배열을 사용하여 원하는 타일의 ID 값을 배열의 위치에 할당했습니다. 그리고 타일 맵을 그릴 때 나는 전체 배열을 두 번 반복 할 것이고 새로운 타일을 반환 할 Tile 함수를 사용하여 현재 루프의 배열 위치와 동일한 ID를 가진 타일을 찾는다. 루프 X 및 Y (명백한 이유 때문에 텍스처 크기로 곱함)로 계속 그립니다. 이 시점에서 내 Tile 클래스에는 X 및 Y 값이 없었습니다. 어떤 것을 앞뒤로 던지는 것 같았습니다. 그리고 어떤 이유로 그것이 원시적 인 접근 방식이라고 느꼈습니다.
그러나 또 다른 접근법을 생각해 보았습니다. 2D 타일 배열을 만들었고 각 배열 위치에 ID 값을 할당 한 다음이를 일치시켜 새로운 인스턴스를 만든 다음 그 값을 그려야했습니다. 배열을 반복하고 생성자에서 현재 X와 Y를 사용하여 원하는 타일의 새 인스턴스를 배열 위치에 놓은 다음 Tile.X 및 Tile.Y로 그립니다. 더 잘 맞는 것 같았습니다.
코드를 실행하기 전에 적어도 약 1 초가 걸렸습니다. 이제 타일을 그리기 전에 전체 배열에 타일을 채울 필요가있었습니다. 그렇지 않으면 이전에 ID가 0 인 타일이 있었기 때문에 null 객체 참조를 반환했습니다. 다른 것이 지정되지 않은 경우 기본값으로 그립니다. 내가 전에 가지고 있던 모든 엉망진창의 어딘가에, ID가 0 인 경우 그려주지 말라고하는 간단한 "if"도 있었지만 나중에 추가했습니다. 이제 Tile 배열을 사용하여 동일한 작업을 수행 할 수 있다는 것을 알았습니다. 0인지 확인한 다음 null이 아닌지 확인합니다. 그러나 null인지 확인하는 데별로 신경 쓰지 않습니다. 다시 말하지만, 코드가 완전히 생각해 보지 못하고 무언가를하고 있지 않다면, 그것은 나에게 원시적 인 것처럼 보입니다. 이전에 ID를 사용했던 타일과 xml을 매치하는 방법을 모르기 때문에 tilemap으로 간단한 xml 파일을 구문 분석하려고하면 또한 필레의 일종이 될 것입니다. Btw, 전에는 XML로 일한 적이 없기 때문에 문제가 될지 짐작할 수 있습니다.
* "프로젝트"가 엔진이라고 생각 될 수있는시기와 이유를 분명히 밝히지 만 기본적인 것은있을 수 있지만 그 역시 멋진 것입니다. 왜냐하면 나는 그것을 완전히 이해하지 못했기 때문입니다.
**이 상황에서 foreach를 사용하는 것이 더 적합 할 것이라는 것을 깨달았지만, 그 타일 배열은 afaik에서만 작동합니다.
TL : DR 내 질문을 끝내려면 무엇이 가장 적합합니까? 타일 맵에 대한 int [,] 또는 Tile [,]? 그리고, 두 개의 무관 한 X와 Y int를 사용하는 대신 위치 지정을 위해 Tile 클래스에서 vector2를 사용해야합니까?
주 - 나는 컴퓨터 과학 학생이며, 지금까지 "hello world"교육 만 받았고 나머지는 개인적인 관심에서 나온 것입니다. 또한, 결함이나 용어가 잘못 사용 된 경우 나 수정하십시오. 나는 도움이 필요하기 때문에 여기에서 묻고 있는데, 온 - 오프 주제에 관계없이 모든 도움을 제공 할 것입니다. 그러나 그것이 적절하고 건설적인 방법으로 주어지면 감사하겠습니다.
편집 : 신성한 sht, 나는 그것을 많이 썼다조차 깨닫지 못했다. 이 모든 것을 읽는 사람이라면, 당신은 진정한 MVP입니다!
나는 이것을 읽는 것을 즐겼다. 그러나 나는 당신에게 답을 가지지 않는다. .. Monogame와 타일 이론에 관한 굉장한 지위! – jhhoff02
잘 묶여 있고 상대적으로 작은지도의 내지도 구조는 대개 'TileStack'의 2 차원 배열입니다. 'TileStack'은 좌표에 대한 메타 데이터를 가지고 있고,'List'는'Tile'입니다. 'Tile'은 Tile의 id와 타일 인스턴스에 대한 색, 오프셋, 회전 등과 같은 추가 정보를 포함합니다. –