[TIL] 64 UI 에 PLAYER 정보 ⭐⭐

업데이트:

카테고리:

태그: , ,


UI



최종 팀 프로젝트 9일차

   [o] 알고리즘 문제 - 53
   [o] 면접 문제 풀기 - 5
   [o] 다른반 강의 듣기 스탠다드2 챌~
   [x] 심화주차 강의 듣기.
   [x] 디자인 코드 패턴 이해,정리하기.
   [x] 자료구조 디자인패턴 강의 다시 듣기.







체력, 스테미나, exp

hp, 스테미나, exp 바에 공통된 부분이 있어서 상속을 이용해 시도해보았다.
image






PlayerBaseSlider

using TMPro;
using UnityEngine;
using UnityEngine.UI;

public class PlayerBaseSlider : MonoBehaviour
{
    protected Slider _slider;
    [SerializeField] private TMP_Text _Text;

    [SerializeField] private int _currentValue;
    [SerializeField] private int _maxValue;

    protected virtual void Awake()
    {
        _slider = GetComponent<Slider>();
    }

    protected virtual void ChangeBar(int _currentValue, int _maxValue)
    {
        _Text.text = (_currentValue + "/" + _maxValue);
        _slider.value = (float)_currentValue / (float)_maxValue;

    }
}



PlayerExpBar : PlayerBaseSlider

경험치바 변경

using UnityEngine;

public class PlayerExpBar : PlayerBaseSlider
{ 
    [SerializeField] private PlayerExpSystem _playerExpSystem;
    private new void Awake()
    {
        base.Awake();
        _playerExpSystem.OnChangeExpUI += base.ChangeBar;
    }

}


PlayerExpSystem
public event Action<int, int> OnChangeExpUI;

OnChangeExpUI.Invoke(_playerExp, _maxExp);

PlayerStatSlider : PlayerBaseSlider

using UnityEngine;
using UnityEngine.UI;

public class PlayerStatSlider : PlayerBaseSlider
{

    [SerializeField] private Image _leftImage;
    [SerializeField] private Image _rightImage;

    protected override void Awake()
    {
        base.Awake();
    }

    protected override void ChangeBar(int _currentValue,int _maxValue)
    {
        base.ChangeBar(_currentValue, _maxValue);
        if (_slider.value == 1)
        {
            _rightImage.color = new Color32(255, 255, 255, 255);
        }
        else if (_slider.value != 1)
        {
            _rightImage.color = new Color32(155, 140, 140, 60);
        }

        if (_slider.value == 0)
        {
            _leftImage.color = new Color32(155, 140, 140, 60);
        }
        else if (_slider.value != 0)
        {
            _leftImage.color = new Color32(255, 255, 255, 255);
        }
    }
}




PlayerStaminaBar : PlayerStatSlider

스테미나 변경

using UnityEngine;

public class PlayerStaminaBar : PlayerStatSlider
{
    [SerializeField] private StaminaSystem _staminaSystem;

    public new void Awake()
    {
        base.Awake();
        _staminaSystem.OnChangeStaminaUI += base.ChangeBar;
    }
}

StaminaSystem
public  Action<int, int> OnChangeStaminaUI;
OnChangeStaminaUI.Invoke(_stamina, _maxStamina);

PlayerHPBar : PlayerStatSlider

using UnityEngine;
using UnityEngine.UI;

public class PlayerHPBar : PlayerStatSlider
{
    [SerializeField] private HealthSystem _healthSystem;

    public new void Awake()
    {
        base.Awake();
        _healthSystem.OnChangeHpUI += base.ChangeBar;
    }
}

HealthSystem

public  Action<int,int> OnChangeHpUI;
OnChangeHpUI.Invoke(_health, _maxHealth);

image







잡담,정리




참고 : 유니티 TOP




📔

댓글남기기