물품들 상호작용 달기
This commit is contained in:
16
Assets/02_Scripts/Mission/MissionObjective.cs
Normal file
16
Assets/02_Scripts/Mission/MissionObjective.cs
Normal file
@@ -0,0 +1,16 @@
|
||||
using System;
|
||||
using UnityEngine;
|
||||
|
||||
// 미션 목표 하나의 베이스. Mission 오브젝트의 자식으로 두면 자동 수집된다.
|
||||
// 새 종류의 미션이 필요하면 이걸 상속해서 IsComplete 구현 + 상태가 바뀔 때
|
||||
// RaiseChanged()만 호출하면 된다 (예: 물건 옮기기, 특정 위치 방문, NPC에게 아이템 전달).
|
||||
public abstract class MissionObjective : MonoBehaviour
|
||||
{
|
||||
// 목표 달성 여부 — 되돌릴 수 있는 목표(물건을 도로 빼는 등)는 false로 돌아가도 된다.
|
||||
// 미션 완료는 "모든 목표가 동시에 true"인 순간 Mission 쪽에서 확정(래치)된다.
|
||||
public abstract bool IsComplete { get; }
|
||||
|
||||
// 달성 상태가 바뀔 때마다 발행 — Mission이 구독해서 완료를 재판정한다
|
||||
public event Action Changed;
|
||||
protected void RaiseChanged() => Changed?.Invoke();
|
||||
}
|
||||
Reference in New Issue
Block a user