[TIL] 64 UI 에 PLAYER 정보 ⭐⭐
카테고리: Til
UI
최종 팀 프로젝트 9일차
[o] 알고리즘 문제 - 53
[o] 면접 문제 풀기 - 5
[o] 다른반 강의 듣기 스탠다드2 챌~
[x] 심화주차 강의 듣기.
[x] 디자인 코드 패턴 이해,정리하기.
[x] 자료구조 디자인패턴 강의 다시 듣기.
체력, 스테미나, exp
hp, 스테미나, exp 바에 공통된 부분이 있어서 상속을 이용해 시도해보았다.
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);
댓글남기기