728x90
1. 개발 현황
TBD
2. 금일 개발 내용
1. 아키텍처 변경
객체 활용 방식 개선
public static GameManager instance;
[Header("# Game Control")]
public bool mIsLive = true;
[Header("# Player Info")]
public int[] mNextExp = { 10, 30, 60, 100, 150, 210, 280, 360, 450, 600 };
[Header("# Unity Data Info")]
public Sprite[] mSprite;
public GameObject[] mPrefabs; // 프리펩들을 보관할 변수
public RuntimeAnimatorController[] mPlayerAnimCtrl;
public RuntimeAnimatorController[] mEnemyAnimCtrl;
[Header("# Json Info")]
public int mPlayerJsonId;
public PlayerJsonData[] mPlayerJsonData;
public WeaponJsonData[] mWeaponJsonData;
public PerkJsonData[] mPerkJsonData;
public EnemyJsonData[] mEnemyJsonData;
[Header("# Level & Item Info")]
public PlayerData mPlayerData;
public int mWeaponSize;
public int mPerkSize;
public ItemCtrlData[] mWeaponCtrlData;
public ItemCtrlData[] mPerkCtrlData;
public PerkData mPerkData;
public WeaponData[] mWeaponData;
public WeaponData[] mWeaponLastData;
[Header("# Game Object")]
public Player mPlayer;
public PoolManager mEnemyPool;
public LevelUp mHUDLevelUp;
데이터 및 현재 상태에 대한 정보를 GameManager에서 일괄적으로 관리
2. static function 구현
싱글턴 활용에 따라 클래스 내 함수의 반복적 생성의 단점을 피하기 위해 static function을 적용함.
public static void InitPerkIdx(int idx)
{
if (idx >= GameManager.instance.mWeaponSize)
Debug.Assert(false, "Error");
int id = GameManager.instance.mPerkCtrlData[idx].Id;
int level = GameManager.instance.mPerkCtrlData[idx].Level;
GameManager.instance.mPerkData.Projectile += GameManager.instance.mPerkJsonData[id].Projectile[level];
GameManager.instance.mPerkData.Damage += GameManager.instance.mPerkJsonData[id].Damage[level];
GameManager.instance.mPerkData.Speed += GameManager.instance.mPerkJsonData[id].Speed[level];
GameManager.instance.mPerkData.Range += GameManager.instance.mPerkJsonData[id].Range[level];
GameManager.instance.mPerkData.CoolTime += GameManager.instance.mPerkJsonData[id].CoolTime[level];
GameManager.instance.mPerkData.Pierce += GameManager.instance.mPerkJsonData[id].Pierce[level];
GameManager.instance.mPerkData.ProjectileCoef += GameManager.instance.mPerkJsonData[id].ProjectileCoef[level];
GameManager.instance.mPerkData.DamageCoef += GameManager.instance.mPerkJsonData[id].DamageCoef[level];
GameManager.instance.mPerkData.SpeedCoef += GameManager.instance.mPerkJsonData[id].SpeedCoef[level];
GameManager.instance.mPerkData.RangeCoef += GameManager.instance.mPerkJsonData[id].RangeCoef[level];
GameManager.instance.mPerkData.CoolTimeCoef += GameManager.instance.mPerkJsonData[id].CoolTimeCoef[level];
GameManager.instance.mPerkData.PierceCoef += GameManager.instance.mPerkJsonData[id].PierceCoef[level];
}
- 전역적인 변수를 제어하는 항목에 대해 static function을 적용함
3. weapon 동작방식 변경
1) 클래스 내 멤버변수 최소화
- 메모리 최적화
2) 제어 클래스 / 객체 클래스 분리
- 제어 클래스: 객체 생성 및 배치 관리
- 객체 클래스: 무기 충돌 및 투사체 이동 로직 관리
3. TODO
1. 싱글턴 구현 완료
2. 원거리 무기 투사체 개수에 따라 방사형 공격 구현
3. 다양한 무기 구현
'--------게임만들기-------- > |unity| by C#' 카테고리의 다른 글
[Unity] Day4 - 싱글턴 구현 완료, 투사체 방사 로직 구현 (0) | 2024.06.05 |
---|---|
[Unity] 방사형 공격 (Rotate, rotation, Quaternion) (0) | 2024.06.05 |
[Unity] 뱀파이버 서바이벌 - Day2 싱글턴 구현 (1) | 2024.06.02 |
[Unity] 뱀파이버 서바이벌 - Day1 게임 개발 로드맵 작성 (0) | 2024.06.02 |
[unity] NullReferenceException 문제 해결 (Script Execution Order) (1) | 2024.06.02 |