public void ChangeGun(string gunName)
    {
        var characteristic = InfoManager.instance.charactoristicInfo;

        void UpdateCharacteristic(ref int characteristicValue, int modifier)
        {
            characteristicValue = Mathf.Clamp(characteristicValue + modifier, 1, 10);
        }

        void UpdateGunCharacteristics(string gunType, int modifier)
        {
            switch (gunType)
            {
                case "AssultRifle":
                    UpdateCharacteristic(ref characteristic.kncokBackCharacteristic, modifier);
                    break;
                case "SniperRifle":
                    UpdateCharacteristic(ref characteristic.penetrateCharacteristic, modifier);
                    break;
                case "ShotGun":
                    UpdateCharacteristic(ref characteristic.bulletAmountCharacteristic, modifier);
                    break;
                case "SubmachineGun":
                    UpdateCharacteristic(ref characteristic.dashRecoverCharacteristic, modifier);
                    break;
            }
        }

        UpdateGunCharacteristics(this.currentGun.gunForm.gunType, -2);
        this.currentGun = this.gameObject.GetComponent(gunName) as GunState;
        UpdateGunCharacteristics(gunName, 2);

        this.SetGun();
    }

 

변경된 값을 1~10까지로 한계를 지정합니다. 이떄 ref 키워드를 사용하여 매개 변수의 값을 변경하는 방식으로 코드를 단순화 하였습니다. 또한 as 키워드를 사용하여 gunName을 GunState 타입으로 형변환하였습니다.

 

+ Recent posts