728x90

1. 개발 현황 정리

1. Enum Class
weapon type 관련

2. Struct
enemy 관련
weapon 관련

3. GameManager
싱글턴 방식
경험치 관리 로직
시간 관리 로직

4. Player
이동 로직
오브젝트 거리 측정 로직

5. ObjectPool
list 동적 생성 로직
비활성화 오브젝트 탐색 로직
오브젝트 생성 로직

6. Enemy
rigidbody
collider
animator
spriterenderer
리스폰 로직


7. Weapon
근접 회전형 무기 로직
원거리 투사체 무기 로직
장착형 무기 로직

8. HUD
게임환경 HUD
레벨업 HUD



2. 진행 내용

오늘은 싱글턴 구현을 위해 코드의 동작 방식을 전체적으로 변경하는 것을 목표로 삼았다.

1) 모든 GameObject, Sprite 등 Unity 엔진 내에서 추가 관리가 필요한 항목을 모두 GameManager에서 일괄적으로 관리하도록 변경
- 내가 생각한 장점:
동작 간 참조가 필요한 데이터를 일괄적으로 관리하므로, 메모리 중복을 피하고, 동작 속도를 높일 수 있을 것으로 생각함.

- 적용 방향
모든 class 내 기본 데이터를 모두 GameManager로 이동
array형태로 데이터 관리

- 구현 간 이슈 및 학습내용:
GameObject 속성 추가
싱글턴


2) 무기, 적 정보를 JSON 방식으로 저장 및 로드 동작 구현
- 내가 생각한 장점:
개발 간 수치 수정 및 추가가 용이하도록 변경

- 적용 방향
GameManager에서 구조체를 array로 관리하도록 설정함
GameObject, Sprite 접근을 위한 int형 변수 활용

- 구현 간 이슈 및 학습내용
SerializerField
array 저장을 위한 JsonConverter 클래스 활용
GameObject, Sprite 정보 저장 불가


3) 하위 class 동작 간 GameManager 객체를 참고하여 동작이 이뤄지도록 수정
- 내가 생각한 장점
메모리 효율성 증가

- 적용 방향
각 class는 int형 Id 데이터만을 관리하며, GameManager를 참조하여 동작이 이뤄지도록 수정

- 구현 간 이슈 및 학습내용
NullReferenceError
Script Ex3cution Order


4) 스크립트에서 게임 오브젝트 생성
- 내가 생각한 장점
런타임 시 Unity Scene에 추가되어있는 게임 오브젝트를 고려하지 않고 제작이 가능함
추후 생산성 확보가 가능
객체 관리의 효율성 증가

- 적용 방향
클래스 형태의 객체를 멤버함수로 가지며, 컴포넌트에 게임오브젝트를 추가하는 방향으로 적용함
추후 rigidbody나 animator 등 속성을 추가할 예정

- 구현 간 이슈 및 학습내용
AddComponent

3. TODO List

1. GameManager
 1) 하위 클래스 및 게임 오브젝트 관리
  - 컴포넌트 추가 로직 구현
 
2. 무기 종류 추가

3. 이펙트 추가

4. 퍽 종류 추가

5. 골드 및 경험치 드롭 추가

6. 설정 창 추가

7. 메인화면 추가

8. 특성 창 추가

참고자료

추후 개별적인 포스트로 변경하자.
 

https://docs.unity3d.com/kr/530/Manual/CreateDestroyObjects.html

게임 오브젝트 생성 및 제거 - Unity 매뉴얼

일부 게임은 씬에 일정한 수의 오브젝트를 유지하지만 게임플레이 중에 캐릭터, 보물 및 기타 오브젝트를 만들고 제거하는 것은 매우 일반적입니다. Unity에서 게임 오브젝트는 기존 오브젝트의

docs.unity3d.com

https://docs.unity3d.com/kr/2019.3/ScriptReference/GameObject.AddComponent.html

GameObject-AddComponent - Unity 스크립팅 API

Adds a component class named className to the game object.

docs.unity3d.com

 

+ Recent posts