Unity

[졸업작품, Unity]아이템 시스템 수정

HK1206 2025. 3. 9. 23:38

저번에 만들었던 아이템 시스템에 개편이 필요해 보여서 수정을 했다. 수정 내용은 다음과 같다.

 

#region itemValue
        
        [Header("Effect Value")]
        [BoxGroup(GroupName = "EffectValue")]
        public float healCount;
        [BoxGroup(GroupName = "EffectValue")]
        public float damageCount;
        [BoxGroup(GroupName = "EffectValue")]
        public float defenceDecrease;
        [BoxGroup(GroupName = "EffectValue")]
        public float defenceIncrease;
        [BoxGroup(GroupName = "EffectValue")]
        public float strength;
        [BoxGroup(GroupName = "EffectValue")]
        public float weakening;
        
        #endregion

        
        public virtual void UseItem()
        {
            foreach(ItemEffectBase effect in effectList)
            {
                float value = 0;
                switch (effect.effectType)
                {
                    case EffectType.Heal:
                        value = healCount;;
                        break;
                    case EffectType.Damage:
                        value = damageCount;;
                        break;
                    case EffectType.Strength:
                        value = strength;
                        break;
                    case EffectType.Weakening:
                        value = weakening;
                        break;
                    case EffectType.DefenceDecrease:
                        value = defenceDecrease;
                        break;
                    case EffectType.DefenceIncrease:
                        value = defenceIncrease;
                        break;
                }
                
                effect.UseEffect(value);
            }
            
            if (endImmediately)
                EndItemEffect();
            else
                ItemManager.Instance.Delay(EndItemEffect, effectEndTime);
        }

저번과 다른 점은 Item을 생성할 때마다 그에 맞는 Effect를 생성해야 했지만 그게 상당히 비효율적이여서 Item에서 그 값을 대신 설정해주기로 했다. Effect에 Enum을 추가하고 UseEffect를 하기전에 switch로 value값을 정해줬다. 이렇게 하면

전보다 깔끔해졌다. 굳~