씬 전환 기능 및 씬이 변경되어도 플레이어 정보를 유지하도록 게임 매니저 구현

This commit is contained in:
김민구
2026-07-08 04:24:12 +09:00
parent 8f742e50d9
commit 6939015d9e
8 changed files with 456 additions and 25 deletions
+63
View File
@@ -30876,6 +30876,7 @@ GameObject:
m_Component:
- component: {fileID: 863066236}
- component: {fileID: 863066235}
- component: {fileID: 863066237}
m_Layer: 0
m_Name: RightBoundary
m_TagString: Untagged
@@ -30944,6 +30945,19 @@ Transform:
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &863066237
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 863066234}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 0e728dcba3a32418da46f86eb0b8a001, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::WallTransition
targetSceneName: battleStage
--- !u!1 &906519488
GameObject:
m_ObjectHideFlags: 0
@@ -32721,6 +32735,54 @@ PrefabInstance:
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 6c5f439021e347c4f87cc1c7168e955b, type: 3}
--- !u!1 &1094628443
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1094628445}
- component: {fileID: 1094628444}
m_Layer: 0
m_Name: GameManager
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &1094628444
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1094628443}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d42f0450bff4242dca327151c2892fb6, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::GameManager
playerName:
playerGeneration: 1
playerHp: 5
playerMaxHp: 5
--- !u!4 &1094628445
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1094628443}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 42.02, y: -5.99325, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1122496745
GameObject:
m_ObjectHideFlags: 0
@@ -59753,3 +59815,4 @@ SceneRoots:
- {fileID: 1508875807}
- {fileID: 1411466694}
- {fileID: 1673720196}
- {fileID: 1094628445}
+268 -16
View File
@@ -5250,7 +5250,7 @@ MonoBehaviour:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 133454280}
m_Enabled: 0
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
@@ -5263,7 +5263,7 @@ MonoBehaviour:
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: Enter text...
m_text: "\uD14D\uC2A4\uD2B8\uB97C \uC785\uB825\uD558\uC5EC \uACF5\uACA9"
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: ed494d8deb7a7455f8affd65d9a92eef, type: 2}
m_sharedMaterial: {fileID: -5035255238556258946, guid: ed494d8deb7a7455f8affd65d9a92eef, type: 2}
@@ -5272,8 +5272,8 @@ MonoBehaviour:
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 2150773298
m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5}
rgba: 2162221292
m_fontColor: {r: 0.9245283, g: 0.87655747, b: 0.87655747, a: 0.5}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
@@ -5286,7 +5286,7 @@ MonoBehaviour:
m_tintAllSprites: 0
m_StyleSheet: {fileID: 0}
m_TextStyleHashCode: -1183493901
m_overrideHtmlColors: 0
m_overrideHtmlColors: 1
m_faceColor:
serializedVersion: 2
rgba: 4294967295
@@ -5343,6 +5343,17 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 133454280}
m_CullTransparentMesh: 1
--- !u!114 &144455365 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 911507061901746167, guid: 6c5f439021e347c4f87cc1c7168e955b, type: 3}
m_PrefabInstance: {fileID: 1868975694}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image
--- !u!224 &187894583 stripped
RectTransform:
m_CorrespondingSourceObject: {fileID: 3024787883409964218, guid: 6c5f439021e347c4f87cc1c7168e955b, type: 3}
@@ -5522,6 +5533,9 @@ MonoBehaviour:
m_EditorClassIdentifier: Assembly-CSharp::PlayerMove
speed: 5
hp: 5
maxHp: 5
nameText: {fileID: 0}
hpImage: {fileID: 0}
--- !u!1 &403148640
GameObject:
m_ObjectHideFlags: 0
@@ -5923,6 +5937,128 @@ SpriteRenderer:
m_SpriteTileMode: 0
m_WasSpriteAssigned: 1
m_SpriteSortPoint: 0
--- !u!1001 &529100493
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 3431018974941178782, guid: c54b36ee7861c4b41bd1dabf2455160f, type: 3}
propertyPath: m_Pivot.x
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 3431018974941178782, guid: c54b36ee7861c4b41bd1dabf2455160f, type: 3}
propertyPath: m_Pivot.y
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 3431018974941178782, guid: c54b36ee7861c4b41bd1dabf2455160f, type: 3}
propertyPath: m_AnchorMax.x
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 3431018974941178782, guid: c54b36ee7861c4b41bd1dabf2455160f, type: 3}
propertyPath: m_AnchorMax.y
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 3431018974941178782, guid: c54b36ee7861c4b41bd1dabf2455160f, type: 3}
propertyPath: m_AnchorMin.x
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 3431018974941178782, guid: c54b36ee7861c4b41bd1dabf2455160f, type: 3}
propertyPath: m_AnchorMin.y
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 3431018974941178782, guid: c54b36ee7861c4b41bd1dabf2455160f, type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3431018974941178782, guid: c54b36ee7861c4b41bd1dabf2455160f, type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3431018974941178782, guid: c54b36ee7861c4b41bd1dabf2455160f, type: 3}
propertyPath: m_LocalScale.x
value: 5
objectReference: {fileID: 0}
- target: {fileID: 3431018974941178782, guid: c54b36ee7861c4b41bd1dabf2455160f, type: 3}
propertyPath: m_LocalScale.y
value: 5
objectReference: {fileID: 0}
- target: {fileID: 3431018974941178782, guid: c54b36ee7861c4b41bd1dabf2455160f, type: 3}
propertyPath: m_LocalScale.z
value: 5
objectReference: {fileID: 0}
- target: {fileID: 3431018974941178782, guid: c54b36ee7861c4b41bd1dabf2455160f, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3431018974941178782, guid: c54b36ee7861c4b41bd1dabf2455160f, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3431018974941178782, guid: c54b36ee7861c4b41bd1dabf2455160f, type: 3}
propertyPath: m_LocalPosition.z
value: -1.17
objectReference: {fileID: 0}
- target: {fileID: 3431018974941178782, guid: c54b36ee7861c4b41bd1dabf2455160f, type: 3}
propertyPath: m_LocalRotation.w
value: 0.9999619
objectReference: {fileID: 0}
- target: {fileID: 3431018974941178782, guid: c54b36ee7861c4b41bd1dabf2455160f, type: 3}
propertyPath: m_LocalRotation.x
value: -0
objectReference: {fileID: 0}
- target: {fileID: 3431018974941178782, guid: c54b36ee7861c4b41bd1dabf2455160f, type: 3}
propertyPath: m_LocalRotation.y
value: 0.008726557
objectReference: {fileID: 0}
- target: {fileID: 3431018974941178782, guid: c54b36ee7861c4b41bd1dabf2455160f, type: 3}
propertyPath: m_LocalRotation.z
value: -0
objectReference: {fileID: 0}
- target: {fileID: 3431018974941178782, guid: c54b36ee7861c4b41bd1dabf2455160f, type: 3}
propertyPath: m_AnchoredPosition.x
value: 77.75
objectReference: {fileID: 0}
- target: {fileID: 3431018974941178782, guid: c54b36ee7861c4b41bd1dabf2455160f, type: 3}
propertyPath: m_AnchoredPosition.y
value: -12.18
objectReference: {fileID: 0}
- target: {fileID: 3431018974941178782, guid: c54b36ee7861c4b41bd1dabf2455160f, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3431018974941178782, guid: c54b36ee7861c4b41bd1dabf2455160f, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 1
objectReference: {fileID: 0}
- target: {fileID: 3431018974941178782, guid: c54b36ee7861c4b41bd1dabf2455160f, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3431018974941178782, guid: c54b36ee7861c4b41bd1dabf2455160f, type: 3}
propertyPath: m_ConstrainProportionsScale
value: 1
objectReference: {fileID: 0}
- target: {fileID: 5836857197505123814, guid: c54b36ee7861c4b41bd1dabf2455160f, type: 3}
propertyPath: m_Name
value: Player
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents:
- targetCorrespondingSourceObject: {fileID: 4271095123032851471, guid: c54b36ee7861c4b41bd1dabf2455160f, type: 3}
insertIndex: -1
addedObject: {fileID: 1840371597}
- targetCorrespondingSourceObject: {fileID: 4271095123032851471, guid: c54b36ee7861c4b41bd1dabf2455160f, type: 3}
insertIndex: -1
addedObject: {fileID: 1840371596}
- targetCorrespondingSourceObject: {fileID: 4271095123032851471, guid: c54b36ee7861c4b41bd1dabf2455160f, type: 3}
insertIndex: -1
addedObject: {fileID: 1840371595}
m_SourcePrefab: {fileID: 100100000, guid: c54b36ee7861c4b41bd1dabf2455160f, type: 3}
--- !u!1001 &598913983
PrefabInstance:
m_ObjectHideFlags: 0
@@ -5935,6 +6071,10 @@ PrefabInstance:
propertyPath: m_Name
value: SPUM_20240911215638731
objectReference: {fileID: 0}
- target: {fileID: 103380811750077614, guid: dc4d03e9834464d82a1dec0da2b8162f, type: 3}
propertyPath: m_IsActive
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1678357970384765028, guid: dc4d03e9834464d82a1dec0da2b8162f, type: 3}
propertyPath: m_Pivot.x
value: 0.5
@@ -7682,16 +7822,17 @@ PrefabInstance:
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5614311512920842161, guid: 995fb1b7b1d40f54f9494dfbb7dedfe2, type: 3}
propertyPath: m_text
value:
objectReference: {fileID: 0}
- target: {fileID: 6653973045493302981, guid: 995fb1b7b1d40f54f9494dfbb7dedfe2, type: 3}
propertyPath: m_Name
value: server text background
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects:
- targetCorrespondingSourceObject: {fileID: 2026665585076868082, guid: 995fb1b7b1d40f54f9494dfbb7dedfe2, type: 3}
insertIndex: -1
addedObject: {fileID: 1568869829}
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 995fb1b7b1d40f54f9494dfbb7dedfe2, type: 3}
--- !u!1 &976809381
@@ -7830,7 +7971,7 @@ MonoBehaviour:
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: "\uD14D\uC2A4\uD2B8\uB97C \uC785\uB825\uD558\uC5EC \uACF5\uACA9\uD558\uC138\uC694\u200B"
m_text: "\u200B"
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: ed494d8deb7a7455f8affd65d9a92eef, type: 2}
m_sharedMaterial: {fileID: -5035255238556258946, guid: ed494d8deb7a7455f8affd65d9a92eef, type: 2}
@@ -8117,10 +8258,11 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 875108180}
- {fileID: 600791110}
- {fileID: 1184594222}
- {fileID: 600791110}
- {fileID: 1925548785}
- {fileID: 706593202}
- {fileID: 1568869829}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
@@ -18165,7 +18307,7 @@ GameObject:
- component: {fileID: 1568869831}
- component: {fileID: 1568869830}
m_Layer: 5
m_Name: atteck
m_Name: InputField (TMP)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
@@ -18178,17 +18320,17 @@ RectTransform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1568869828}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 1475548641}
m_Father: {fileID: 600791110}
m_Father: {fileID: 1183798055}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: -424.21188, y: 150}
m_AnchoredPosition: {x: -425.2119, y: -259}
m_SizeDelta: {x: 451.5754, y: 35.4596}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1568869830
@@ -18277,7 +18419,7 @@ MonoBehaviour:
m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
m_CustomCaretColor: 0
m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412}
m_Text: "\uD14D\uC2A4\uD2B8\uB97C \uC785\uB825\uD558\uC5EC \uACF5\uACA9\uD558\uC138\uC694"
m_Text:
m_CaretBlinkRate: 0.85
m_CaretWidth: 1
m_ReadOnly: 0
@@ -33921,6 +34063,92 @@ Tilemap:
e31: 0
e32: 0
e33: 1
--- !u!1 &1840371593 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 4271095123032851471, guid: c54b36ee7861c4b41bd1dabf2455160f, type: 3}
m_PrefabInstance: {fileID: 529100493}
m_PrefabAsset: {fileID: 0}
--- !u!114 &1840371595
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1840371593}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9ba0864ae82c04db9a0ab083a089a388, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::Player
speed: 10
hp: 5
maxHp: 0
nameText: {fileID: 1944988752}
hpImage: {fileID: 144455365}
--- !u!70 &1840371596
CapsuleCollider2D:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1840371593}
m_Enabled: 1
serializedVersion: 3
m_Density: 1
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_ForceSendLayers:
serializedVersion: 2
m_Bits: 4294967295
m_ForceReceiveLayers:
serializedVersion: 2
m_Bits: 4294967295
m_ContactCaptureLayers:
serializedVersion: 2
m_Bits: 4294967295
m_CallbackLayers:
serializedVersion: 2
m_Bits: 4294967295
m_IsTrigger: 0
m_UsedByEffector: 0
m_CompositeOperation: 0
m_CompositeOrder: 0
m_Offset: {x: 0, y: 0.4}
m_Size: {x: 0.5, y: 1}
m_Direction: 0
--- !u!50 &1840371597
Rigidbody2D:
serializedVersion: 5
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1840371593}
m_BodyType: 0
m_Simulated: 1
m_UseFullKinematicContacts: 0
m_UseAutoMass: 0
m_Mass: 1
m_LinearDamping: 0
m_AngularDamping: 0.05
m_GravityScale: 1
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_Interpolate: 0
m_SleepingMode: 1
m_CollisionDetection: 0
m_Constraints: 4
--- !u!1 &1850795442
GameObject:
m_ObjectHideFlags: 0
@@ -34116,6 +34344,18 @@ PrefabInstance:
propertyPath: m_Name
value: hp bar background
objectReference: {fileID: 0}
- target: {fileID: 8538378379228196241, guid: 6c5f439021e347c4f87cc1c7168e955b, type: 3}
propertyPath: m_Pivot.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8538378379228196241, guid: 6c5f439021e347c4f87cc1c7168e955b, type: 3}
propertyPath: m_AnchoredPosition.x
value: -235.55505
objectReference: {fileID: 0}
- target: {fileID: 8538378379228196241, guid: 6c5f439021e347c4f87cc1c7168e955b, type: 3}
propertyPath: m_AnchoredPosition.y
value: 1.5000185
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
@@ -34202,6 +34442,17 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1925548784}
m_CullTransparentMesh: 1
--- !u!114 &1944988752 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 7888741024357894282, guid: 390aaa741d870044191b55f300c047a5, type: 3}
m_PrefabInstance: {fileID: 666486821}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
m_EditorClassIdentifier: Unity.TextMeshPro::TMPro.TextMeshProUGUI
--- !u!1 &2008007467
GameObject:
m_ObjectHideFlags: 0
@@ -34398,3 +34649,4 @@ SceneRoots:
- {fileID: 403148642}
- {fileID: 1183798055}
- {fileID: 976809384}
- {fileID: 529100493}
@@ -0,0 +1,42 @@
using UnityEngine;
public class GameManager : MonoBehaviour
{
// 외부에서 쉽게 접근할 수 있는 싱글톤 인스턴스
public static GameManager Instance { get; private set; }
[Header("보존할 플레이어 스탯 데이터")]
public string playerName = "";
public int playerGeneration = 1;
public int playerHp = 5;
public int playerMaxHp = 5;
private void Awake()
{
// 중복 생성 방지 및 싱글톤 유지
if (Instance != null && Instance != this)
{
Destroy(gameObject);
return;
}
Instance = this;
// 씬이 전환되어도 이 오브젝트가 파괴되지 않고 유지되도록 설정합니다.
DontDestroyOnLoad(gameObject);
}
// 플레이어 스탯을 동기적으로 복사하여 세이브하는 메서드
public void SavePlayerData(Player player)
{
if (player != null)
{
playerName = player.CharacterName;
playerGeneration = player.Generation;
playerHp = player.hp;
playerMaxHp = player.maxHp;
Debug.Log($"[GameManager] 캐릭터 정보 보존 세이브 완료: {playerName} ({playerGeneration}대) | HP: {playerHp}/{playerMaxHp}");
}
}
}
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: d42f0450bff4242dca327151c2892fb6
+31 -5
View File
@@ -33,7 +33,7 @@ public class Player : MonoBehaviour
[SerializeField] public int hp = 5;
[SerializeField] public int maxHp = 5;
private bool isFacingRight = false;
private bool isFacingRight = true;
private int currentAnimationState = -1;
private Animator animator;
@@ -69,9 +69,9 @@ public class Player : MonoBehaviour
Debug.LogError($"{gameObject.name} 오브젝트에 SPUM_Prefabs 컴포넌트가 없습니다! 인스펙터를 확인하세요.");
}
// 캐릭터 방향 기본 오른쪽 설정
// 오리지널 리소스가 원래 왼쪽을 보고 있으므로, 시작 시 X 스케일을 반전시켜 즉시 오른쪽을 바라보도록 초기화합니다.
Vector3 initialScale = transform.localScale;
initialScale.x = Mathf.Abs(initialScale.x);
initialScale.x = -Mathf.Abs(initialScale.x);
transform.localScale = initialScale;
animator = GetComponentInChildren<Animator>();
@@ -80,8 +80,34 @@ public class Player : MonoBehaviour
void Start()
{
// 시작 시 백엔드로부터 다음 세대 정보 조회
StartCoroutine(GetNextGenerationFromServer());
// 씬 로딩 후 GameManager에 이미 보존되어 넘어온 캐릭터 정보가 존재한다면 복구합니다.
if (GameManager.Instance != null && !string.IsNullOrEmpty(GameManager.Instance.playerName))
{
characterName = GameManager.Instance.playerName;
generation = GameManager.Instance.playerGeneration;
hp = GameManager.Instance.playerHp;
maxHp = GameManager.Instance.playerMaxHp;
// UI 텍스트 및 이미지 게이지 동기화
if (nameText != null)
{
nameText.text = characterName;
}
if (hpImage != null && maxHp > 0)
{
float fillRatio = Mathf.Clamp01((float)hp / maxHp);
hpImage.fillAmount = fillRatio;
hpImage.rectTransform.localScale = new Vector3(fillRatio, 1f, 1f);
}
Debug.Log($"[Player] GameManager로부터 이전 캐릭터 정보를 무사히 인계받았습니다: {characterName} | HP: {hp}/{maxHp}");
}
else
{
// 데이터가 보존되지 않은 최초 기동 상태인 경우에만 백엔드 서버에서 신규 세대 번호를 조회하여 할당합니다.
StartCoroutine(GetNextGenerationFromServer());
}
}
private void Update()
@@ -0,0 +1,44 @@
using UnityEngine;
using UnityEngine.SceneManagement;
[RequireComponent(typeof(Collider2D))] // 트리거 판정을 위해 Collider2D가 부착되어 있어야 합니다.
public class WallTransition : MonoBehaviour
{
[Header("전환될 목표 씬 이름")]
[SerializeField] private string targetSceneName = "battleStage";
private void Start()
{
// 물리적인 밀어냄 현상을 방지하고 통과 감지만 할 수 있도록 트리거(Trigger)로 지정합니다.
Collider2D col = GetComponent<Collider2D>();
if (col != null && !col.isTrigger)
{
col.isTrigger = true;
Debug.LogWarning($"[Transition] {gameObject.name}에 부착된 Collider2D를 트리거(Is Trigger = true)로 자동 갱신했습니다.");
}
}
private void OnTriggerEnter2D(Collider2D other)
{
// 닿은 물체가 플레이어 캐릭터인지 확인합니다.
Player player = other.GetComponent<Player>();
if (player != null)
{
Debug.Log($"[Transition] 플레이어 '{player.CharacterName}'가 우측 경계 성벽에 접촉했습니다.");
// 1. 싱글톤 GameManager 인스턴스가 존재할 경우 현재 플레이어의 정보(이름, 세대, HP)를 세이브합니다.
if (GameManager.Instance != null)
{
GameManager.Instance.SavePlayerData(player);
}
else
{
Debug.LogWarning("[Transition] 씬에 GameManager 싱글톤 오브젝트가 존재하지 않아 플레이어 정보 임시 세이브를 스킵합니다.");
}
// 2. 유니티 씬 매니저를 통해 목표 씬(battleStage)을 즉시 로드합니다.
Debug.Log($"[Transition] {targetSceneName} 씬으로 화면을 전환합니다.");
SceneManager.LoadScene(targetSceneName);
}
}
}
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 0e728dcba3a32418da46f86eb0b8a001
@@ -6,11 +6,11 @@ EditorBuildSettings:
serializedVersion: 2
m_Scenes:
- enabled: 1
path: Assets/2D_Pixel_Light/Scenes/Basic.unity
guid: bb356265201af4d40b05e21e32f76eaf
path: Assets/Scenes/Lobby.unity
guid: 6900ea19104f9ce44876ff9a768882d0
- enabled: 1
path: Assets/2D_Pixel_Light/Scenes/Complete.unity
guid: c3e82cf2e80ca5542bbc8025185d98c8
path: Assets/Scenes/battleStage.unity
guid: 01631e903c99249258c1cf4651fc7cc9
m_configObjects:
com.unity.input.settings.actions: {fileID: -944628639613478452, guid: 2bcd2660ca9b64942af0de543d8d7100, type: 3}
m_UseUCBPForAssetBundles: 0