반응형
옵저버 패턴
객체 간에 일대다 종속 관계를 정의하여 한 객체의 상태 변경이 다른 객체에 자동으로 통지되는 패턴.
게임 내에서 이벤트 시스템 또는 UI 업데이트와 같은 상황에서 유용합니다.
using UnityEngine;
using System;
// 이벤트에 대한 데이터
public class EventData
{
public string eventName;
public int eventValue;
}
// 옵서버 인터페이스
public interface IObserver
{
void OnNotify(EventData data);
}
// 옵서버를 관리하는 클래스
public class Subject
{
private List<IObserver> _observers = new List<IObserver>();
// 옵서버 등록
public void RegisterObserver(IObserver observer)
{
if (!_observers.Contains(observer))
{
_observers.Add(observer);
}
}
// 옵서버 제거
public void RemoveObserver(IObserver observer)
{
if (_observers.Contains(observer))
{
_observers.Remove(observer);
}
}
// 옵서버에게 알림
public void Notify(EventData data)
{
foreach (var observer in _observers)
{
observer.OnNotify(data);
}
}
}
// 예시로 사용할 옵서버
public class ExampleObserver : MonoBehaviour, IObserver
{
public void OnNotify(EventData data)
{
Debug.Log($"Event Received: {data.eventName}, Value: {data.eventValue}");
}
}
// 예시로 사용할 이벤트 발송자
public class EventSender : MonoBehaviour
{
private Subject _subject = new Subject();
private void Start()
{
EventData data = new EventData { eventName = "Example Event", eventValue = 42 };
_subject.Notify(data);
}
}
반응형
'개발 > C#' 카테고리의 다른 글
유니티 C# UI끼리 겹쳤을 때 체크하는 법 Unity UI Overlap (0) | 2023.03.22 |
---|---|
유니티 C# 2D 물리 점프 간단 구현 Unity Rigidbody2D Jump (0) | 2023.03.22 |
유니티 C# 룰렛 만들기 간단 구현 Unity Roulette (0) | 2023.03.22 |
유니티 C# 플레이어를 추적하는 적 코드 간단 구현 Unity (0) | 2023.03.19 |
유니티 C# 두 점 사이의 각도 구하기 간단 구현 Unity Vector2 Angle (0) | 2023.03.19 |
유니티 C# 특정 값을 제외한 랜덤 값 구하기 Unity Random Value Generator (0) | 2023.03.19 |
유니티 C# 블루투스 통신 간단 구현하기 Unity Bluetooth (0) | 2023.03.08 |
유니티 C# 자이로센서 간단 구현하기 (0) | 2023.03.08 |
댓글