성장하고 싶은 나는 샤워하거나 씻을때 유튜브 Unity korea 에서 제공하는 디자인패턴에 관한 TIP들을 보는데, 옵저버 패턴이란 내용이 나와서 블로그에 정리해보기로 했다.
옵저버 패턴이란 ?
한 객체의 상태가 변경될때, 이를 의존하는 다른 객체들에게 자동으로 알림을 보내는 패턴입니다.
(게임개발에서는 이벤트 시스템 혹은 UI업데이트에 주로 사용됩니다.)
한번 예시코드를 작성해 보도록 하겠습니다.
코드의 흐름을 이렇게 이해하면 쉽게 이해할 수 있습니다.
이벤트를 등록 > 이벤트를 구독(메서드) > 이벤트를 발생 > 이벤트를 구독하는 메서드를 호출
public class Player : MonoBehaviour
{
// 이벤트를 등록
public static event Action<int> OnHealthChanged;
private int health = 100;
//TakeDamage(int damage)메서드가 호출되면 health에 damage를 주고 이벤트를 발생시킴
public void TakeDamage(int damage)
{
health -= damage;
// 체력 변경 시 이벤트 발생
OnHealthChanged?.Invoke(health)
}
}
// UI클래스
public class HealthUI : MonoBehaviour
{
// 게임 오브젝트가 활성화될 때 이벤트 구독
void OnEnable()
{
Player.OnHealthChanged += UpdateHealth;
}
// 게임 오브젝트가 비활성화될 때 이벤트 구독 해제
void OnDisable()
{
Player.OnHealthChanged -= UpdateHealth;
}
// 플레이어의 체력이 변경될 때 호출되는 메서드
void UpdateHealth(int currentHealth)
{
// 체력 정보를 UI에 표시 (환경에 맞는 코드로 변경)
Debug.Log($"Player Health: {currentHealth}");
}
}
끗!
'[UNITY],[C#] > TIL : UNITY' 카테고리의 다른 글
[OOP] SRP :: 단일책임원칙에 관하여 (0) | 2024.10.15 |
---|---|
[Unity] ScriptableObject 활용하기 (0) | 2024.10.14 |
[Unity] Object Pool (오브젝트풀) (2) | 2024.10.11 |
[Unity] 간단한 NPC 대화 구현하기 (0) | 2024.10.10 |
[C#] AI에게 배우는 C# (0) | 2024.10.08 |