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

[Day 6] 전체 리팩토링 및 게임 매니저 구현

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

[2021. 07. 17]

오늘은 토요일이라 점심에 푹 쉬었다가 오후 5시 부터 시작하였다.

오늘 한 일은

1. 스폰매니저 및 전체적으로 리팩토링.

2. 게임 매니저 구현.

이다.

 

게임 시작 시 모든 국가들은 병력을 가지고있어야 하고 유닛 타입에 걸맞는 스텟을 부여해줘야한다. 이제 SpawnManager.cs에서 temp라는 변수를 하나 만들고 실험을 해왔으니, 이제는 구현 해놓은 기능들을, 실제로 유닛을 배치하고 적용할 차례이다.

 

[매니저]

매니저들을 한 곳에 모아놓은 사진
GameManager.cs

 

[리팩토링]

▼ 1.수정된 SpawnManager.cs (차례대로)

플레이어 유닛인지 적 유닛인지 구분해준다
SpawnManager.cs
SpawnManager.cs(2)
SpawnManager.cs(3)
성공1
성공2

 

그런데 갑자기 다른 문제를 하나 찾았다.

 

프레임이 144만큼이나 떨어졌는데 (물론 유닛을 처음에 쫙 깔아놔서 그렇긴하지만 너무 심하다)

원인을 찾기 위해서 Profiler로 확인을 해봤다.

 

원인은 Camera.Render 요놈이다.

알고보니 메인카메라가 Minimap(레이어) 표시용으로 둔 맵들도 보여주고있었다. 저렇게 받고싶은 것만 체크해주니깐

 

평균 FPS가 30이나 올라갔다.

 

 

▼ 2. GridUnitSystem, SelectManager 결합

 SelectManager 스크립트를 지우고 그 안의 내용을 GridUnitSystem에 결합을 하였다.

 왜 이렇게 했냐면, 아군을 선택한 상황에서 다른 아군 유닛을 클릭했을 때 새로 선택한 유닛과 상호작용을 해야하는데, 기존의 구조는 SelectManager에서

selected라는 static 변수를 가지고있고 GridUnitSystem에서 확인을 한 다음에 상황에 알맞는 타일들을 Active 시켜주는 구조이다.

 그러다 보니깐 아무리 내용을 바꿔놔도 클릭을 하는 그 짧은 순간에 selected를 null시키고 다시 또 그리드 스크립트에서 그걸 확인하고 그에 알맞는 타일들로 재변경해주기에는 무리였다.

 

정리된 GridUnitSystem.cs
GridUnitSystem.cs(1) - Class Info
GridUnitSystem.cs(2) - Unity Methods
GridUnitSystem.cs(3) - Tilemap Manager
GridUnitSystem.cs(4) - SelectManager

 

수정된 후 실험 성공

 

728x90