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. 다양한 무기 구현

+ Recent posts