인터페이스


1
2
3
4
5
6
using System;
 
public interface IHpProvider
{
    event Action<float> ActionOnHpChanged;
}
cs



체력 시스템


1
2
3
4
5
6
7
8
9
10
11
public class HealthSystem : Monobehaviour, IHpProvider
{
    public float CurHp { get; private set; }
    public event Action<float> ActionOnHpChanged;
 
    public void Damage(float damage)
    {
        CurHp -= damage;
        ActionOnHpChanged?.Invoke(CurHp);
    }
}
cs

체력바


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class HealthBar : MonoBehaviour
{
    private IHpProvider _hpProvider;
 
    public void Initialize(IHpProvider hpProvider)
    {
        _hpProvider = hpProvider;
        _hpProvider.ActionOnHpChanged += OnHpChanged;
    }
 
    private void OnDestroy()
    {
        if (_hpProvider != null)
        {
            _hpProvider.ActionOnHpChanged -= OnHpChanged;
        }
    }
    
    private void OnHpChanged(float curHp)
    {
        // 체력바 동기화
    }
}
cs



시스템을 나눠주는데 요런식으로 사용하면 되는걸까?

+ 인터페이스랑 액션 네이밍 추천좀 ㅠㅠ