본문 바로가기
개발 (Game)/(2021) Unity RTS 포트폴리오

[Day 5-1] 확장메서드 수정 + 미니맵 구현

by 진현개발일기 2021. 7. 16.

[2021. 07. 16]

 

[미니맵 구현]

 

미니맵 부분은 너무 쉬우니 과정 설명을 간략화하겠다.

미니맵 캠을 하나 따로 만들고 Minimap레이어만 검출
맵이 못생겼지만 그래도 어쨋든 구현 완료했다.

그런데 문제점이 있다.

 

구현을 해보니 프레임을 반이나 깎아 먹는 것이다..; 원인을 생각해보면 프레임을 잡아 먹을 수 밖에 없는 것이

이미지 파일을 보여주는 것이 아니라 맵 전체를 다른 카메라로 다시 한 번 더 보여주는 것이기 때문에

당연한 것이다. 그래도 100FPS아래로 안떨어져서 다행이긴하지만 물론 고칠 예정이고, 중요한 기능들을 다 끝낸 다음에,방법을 몰색할 것이다.

 

[확장메서드 구현]

저번에 올렸던 확장메서드는 솔직히 연습 겸이라도 코드 작성하면서 스스로도 이걸 굳이 이렇게 할 필요가 있나 싶은 것이다. 그래서 저렇게 간단한 것에는 확장메서드를 쓰지 않고 그냥 if/else if로 끝내버리고 다른 것에다 쓸 생각을 하다가

레벨업에다 넣으면 되지 않을까 싶었다.

 

그런데 Unit.cs 자체에 레벨업을 넣으면 안된다. 왜냐하면 저번 글에서 볼 수 있듯이 유닛을 구입하고 소환하는 것이

매니저에서 해당 유닛의 데이터를 씌워주고 소환해주는 것이다. 그러니깐 아무리 Unit.cs에서 레벨업 시켜봤자

Lv1인 데이터를 씌우게 된다.

 

그러면 데이타의 레벨을 올리면 되지않냐? 라고 생각할 수 있을텐데 적군와 아군 모두 동일한 ScriptableObject

데이타를 공유하고있다. 그러니깐 내 것을 레벨업 시키면 적 유닛도 같이 레벨업 하는 것이다. 그것을 방지하기

위해서 방법을 생각하고 구현한 것들이 아래 예시들이다.

 

 

스폰매니저 클라스 밑에 유닛들의 정보를 보관하고있는 데이터 용의 클라스를 만들었다.

 

생성자로 초기 값을 지정해주고 딕셔너리에 보관한다
SpawnManager.cs 스텟 기입 및 레벨업 함수

 

 

수정 된 확장메서드

 

 

확장메서드(레벨 업) 사용 전

일단은 확장메서드 사용 하기 전에 BaseStats의 메모리를 잘 기입하는지 확인을 해봤고 다행히 정상 작동한다.

 

이제 레벨업(확장메서드)를 사용 해보겠다.

레벨업도 성공했다. ★ㅎㅎ

728x90