본문 바로가기
개발자가 되어보자..공부공부

C# 유니티 공부 15 - 2D 슈팅 게임 예제. (아이템 획득 및 사용 로직, ★배경 패럴릭스/스크롤링 기법, ★오브젝트 풀링)

by 묭묭이와소담이 2022. 12. 16.
반응형

* 아이템 획득 및 사용 로직

- 적 비행기 파괴 시에 생성되도록 설정.

- 오브젝트 풀링 최적화로 Destroy가 아닌 SetActive로 설정.

- random.ragne를 이용하여 아이템 생성 확률 조정.

 


 

* 배경 원근법 (패럴릭스)

- 배경 사진을 여러장 사용.

- 가까운 배경그림은 속도를 빠르게, 멀리 있는 배경그림은 속도를 느리게 하여 원근법 효과 발생.

(속도는 배경 스크립트를 생성하여 Public 변수로 설정.)

- 횡스크롤 게임에서 주로 사용.

 

 


 

* 배경 스크롤링

- 해당 종스크롤에서는 y축을 기준으로 하여 아래 배경을 위로 옮겨주어 무한적으로 배경을 만들어주는 방법.

- 횡스크롤에서는 x축을 기준으로 하면 될듯.

- 카메라 Size에 대한 이해 필요.

- 로직에 대한 구제적인 이해 필요.

 

 


 

* 오브젝트 풀링

- 게임 최적을 위한 작업.

- Instantiate, Destroy로 생성과 파괴를 반복하게 되면 조각난 쓰레기 데이터들이 발생.

유니티 자체에서 조각데이터들을 처리하게위한 작업을 진행하면서 렉 발생.

- 이를 방지하기 위하여 생성, 파괴가 아닌 활성화/비활성화로 오브젝트를 정리.

 

 

★ 오브젝트 풀링, 최적화 스크립트 작업 순서.

1) Object Manger 스크립트 생성.

2) 프리펩을 생성하여 저장할 배열 변수 생성. (유니티에서 할당 필요)

3) 한 번에 등장할 오브젝트 갯수를 고려하여 배열 길이 할당.

4) Instantiate로 Object Manger에서 게임 로딩 단계에 일괄적으로 생성 후 비활성화시킴.

5) Object Manger(오브젝트 풀)에  접근할 수 있는 함수 생성. (switch 문 이용)

6) 기존 다른 스크립트에서 Instantiate, Destroy 함수 모두 변경.

Instantiate는 5)번에서 만든 함수로 변경.

Destroy는 SetActive(false)로 변경.

7) Find 함수 교체.

- 자체적인 게임오브젝트 변수 배열과, 5)번에서 만든 함수이용. 

 

 


 

 

★ 프리펩에는 유니티에서 오브젝트를 할당 시킬 수 없음. (프리펩 끼리는 가능.)

필요하다면 Game Manager를 통하여 2번 끌어오는 방법을 이용해야함.

 

★ 오브젝트 풀링 최적화 이후 Hit가 안되는 적 비행기 발생.

- 새로 생성된 게 아니라 비활성이기 때문에, 적 비행기의 체력이 0인 상태로 활성화 되기 때문.

Enable(생명주기함수)로 적 체력을 초기화 시켜주면 됨.

 

 

 

 

 

반응형

댓글