개요
제가 의욕이 안났던 이유는 그냥 엔진 갠프가 하기 싫어서였을지도 모르겠습니다.
겜프는 좀 재밌네요.
개발 시작 전에...
게임 프로그래밍 과목에서 진행하는 프로젝트는 팀 프로젝트라고 말씀 드렸었죠?
제가 팀장인 만큼 메인이 되어서 개발을 진행해야 합니다. 그러다보니 일단 같이하는 친구에게 다른 일을 시켜놓고 저는 구조를 짰습니다.
그 과정이 저번 글입니다.
구조는 생각보다 빨리 완성 됐으니 친구에게 이러한 구조가 됐으니 Scene을 상속 받아서 너가 원하는 Scene을 만들고 init, update, render 함수를 구현해서... 뭐 이러쿵저러쿵.
구조는 이해하기 편하고 직관적이게 짰으니 문제는 없었습니다.
일단 Title과 Transition 이펙트를 맡겨두었습니다.
이제 저는 다른 일을 하고 있다가 이제 슬슬 InGameScene을 해야겠다고 마음을 먹고 프로젝트를 켰습니다.
트랜지션은 시킨 당일에 완성 되었고 기획할때 시켜둔 맵과 구조짤때 시켜둔 간단한 기획을 받았습니다.
맵은 가로 30칸, 세로 20칸이고 지금 저기선 폼이 망가져있으니 메모장으로 다시 봅시다.
0은 벽, 1은 길, 2는 유닛 설치 가능 영역, 4는 집입니다.
...왜 3이 아니라 4를 썼냐면 렌더링을 할때 And 연산을 사용할 예정이기 때문이였는데...
...적다보니까 생각보다 의미없는 짓이였습니다. 맵은 한칸 한칸 클래스로 관리하겠습니다.
매니저를 통해 관리하면 그만이니까요. 모든 칸 마다 하나씩 클래스를 할당하는게 (600(30x20)개의 클래스를 만들어야 함) 메모리를 잡아먹진 않을까 걱정됐지만 생각해보니 컴퓨터에 무리가 갈만큼 먹진 않을것 같아서 그냥 만들기로 했습니다.
Transition
일단 씬을 옮길때마다 그냥 넘어가면 재미가 없으니 연출을 주도록 하겠습니다.
근데 연출을 한번만 사용하기엔 조금 아깝기 때문에 Transition만을 위해 Scene을 하나 만들었습니다.
연출은 제가 만든건 아니고 같이 팀플하는 친구가 만들어줬습니다.
근데 문제는 Transition만을 위해 Scene을 구별해놨기 때문에 TransitionScene이 이 Transition이 끝나면 어느 씬으로 이동해야 하는지에 대한 정보가 없어요.
그렇기 때문에 SceneManager에서 이동해야 할 Scene을 저장해준 다음에 TransitionScene에서 Transition이 끝났을때 저장해뒀던 Scene을 가져와서 이동해줍시다.
void setTransition(string sceneName) { _transitionSceneName = sceneName; }
string getTransitionScene() { return _transitionSceneName; }
string _transitionSceneName;
SceneManager에 이렇게 함수를 추가해주고 변수 또한 추가해줍니다.
그 뒤에 TransitionScene이 끝나는 지점에 이 한줄을 추가해줍니다.
GET_SINGLETON(SceneManager)->loadScene(GET_SINGLETON(SceneManager)->getTransitionScene());
이제 TransitionScene으로 넘어가기 전에 SceneManager에서 넘어갈 Scene을 정해준 뒤 넘어가면 되겠죠.
이런식으로요.
GET_SINGLETON(SceneManager)->setTransition("InGameScene");
GET_SINGLETON(SceneManager)->loadScene("TransitionScene");
마치는 말
이번 글이 짧은 이유는 분량조절을 위해섭니다.
이 다음 글에서 다룰 InGameScene 같은 경우엔 만들때 시행착오도 좀 있었고 여러가지 설명할 것도 많기 때문에 이 글과 붙였다간 엄청나게 길어질게 뻔하죠.
그러니 다음 글에 쓰겠씁니다.
'개발 > Default Defense' 카테고리의 다른 글
Default Defense | 다섯번째 프로젝트 # 5 : Enemy Movement (1) | 2024.06.21 |
---|---|
Default Defense | 다섯번째 프로젝트 # 4 : Entity (2) | 2024.06.15 |
Default Defense | 다섯번째 프로젝트 # 3 : 맵 (2) | 2024.06.15 |
Default Defense | 다섯번째 프로젝트 # 1 : Scene 구조, 싱글톤 (0) | 2024.06.03 |
Default Defense | 다섯번째 프로젝트 # 0 : 기획 (0) | 2024.06.03 |