diff --git a/Fantasy-Grower/Assets/Scripts/Dungeon.meta b/Fantasy-Grower/Assets/Scripts/Dungeon.meta
new file mode 100644
index 0000000..0184fea
--- /dev/null
+++ b/Fantasy-Grower/Assets/Scripts/Dungeon.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 54f89240703479c4aac198efdadf69c3
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Fantasy-Grower/Assets/Scripts/Dungeon/SO_DungeonState.cs b/Fantasy-Grower/Assets/Scripts/Dungeon/SO_DungeonState.cs
new file mode 100644
index 0000000..5bbd743
--- /dev/null
+++ b/Fantasy-Grower/Assets/Scripts/Dungeon/SO_DungeonState.cs
@@ -0,0 +1,42 @@
+using System;
+using UnityEngine;
+
+public enum DungeonState
+{
+ None, // 초기 상태, 던전이 시작되지 않은 상태
+ Start, // 던전이 시작된 상태
+ InProgress, // 던전이 진행 중인 상태
+ Failed, // 클리어에 실패한 상태
+ Completed, // 클리어에 성공한 상태
+}
+
+[CreateAssetMenu(fileName = "DungeonState", menuName = "ScriptableObjects/DungeonState", order = 1)]
+public class SO_DungeonState : ScriptableObject
+{
+ private DungeonState currentState;
+
+ ///
+ /// 상태 변경 시 이벤트를 발생시키는 프로퍼티
+ ///
+ public DungeonState CurrentState
+ {
+ get => currentState;
+ set
+ {
+ if (currentState == value)
+ return;
+ currentState = value;
+ OnDungeonStateChanged?.Invoke(currentState);
+ }
+ }
+
+ ///
+ /// 사용 예 : state.OnDungeonStateChanged += (newState) => { Debug.Log($"Dungeon state changed to: {newState}"); };
+ ///
+ public event Action OnDungeonStateChanged;
+
+ private void OnEnable()
+ {
+ currentState = DungeonState.None; // 초기 상태 설정
+ }
+}
diff --git a/Fantasy-Grower/Assets/Scripts/Dungeon/SO_DungeonState.cs.meta b/Fantasy-Grower/Assets/Scripts/Dungeon/SO_DungeonState.cs.meta
new file mode 100644
index 0000000..0a0503b
--- /dev/null
+++ b/Fantasy-Grower/Assets/Scripts/Dungeon/SO_DungeonState.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: f519d2f876e2d2544aa07bf492a39730
\ No newline at end of file