docs(BT12-MVP-A Phase 2-B B+C·2-1·2-2 통합 완료): SkillSelectionCanvas Prefab + Scene 통합 + 한글 폰트 + 디자인 정정
산출물 (D안 — 기능 우선·그래픽 디테일 차후): Prefab (신규): - Assets/Prefabs/UI/SkillSelectionCanvas.prefab — 28 GameObject·Canvas Screen Space-Overlay·Sort Order 200 - SkillSelectionPanel (anchor stretch·반투명 검정 RGBA(0,0,0,0.78)) - Header (top stretch 120·베이지 9-slice·"기술 선택" 한글) - CardArea (center 1000x700·HorizontalLayoutGroup·SkillCardSlot ×3) - Footer (bottom stretch 200·"남은 포인트"·"확인" 노랑 버튼) - SkillCardSlot 자식 (TopBanner 갈색·NameText 흰색·IconArea·LevelText/DescriptionText 갈색·ClickArea·HighlightFrame) 한글 폰트: - Assets/Fonts/NotoSansKR-Regular.ttf (Apache 2.0·Google Noto Sans CJK KR) - Assets/Fonts/NotoSansKR-Regular SDF.asset (Multi Atlas·Dynamic mode·atlas 2x 2048) - Assets/TextMesh Pro/Resources/TMP Settings.asset (fallback NotoSansKR 등록) Scene 영역: - [LevelUpManager] GameObject + LevelUpManager·SkillCardPlaceholderPool 영역 - Pool _allCards 5 asset 매핑 (A01·A05·P01·P12·AW01) - LevelUpManager _pool/_ui 영역 매핑 - SkillSelectionCanvas Prefab 인스턴스 영역 SkillSelectionUI 8 field (_rootPanel·_titleText·_slot1·2·3·_pointText·_confirmButton) 영역 매핑 스크립트 (Debug.Log 추가·차후 가드 처리 의무): - ExperienceSystem.cs (DEFAULT_XP_REWARD 5→1 임시·OnEnemyKilled 진단 Log) - PlayerProgression.cs (GainXP·LEVEL UP 진단 Log) - LevelUpManager.cs (HandleLevelUp·_ui.Show 호출 진단 Log) - LevelXPTableLoader.cs (GetXPToNextLevel return 1 임시·기능 테스트 영역) - SkillSelectionUI.cs (Awake·Show 진단 Log + gameObject.SetActive 영역) 회귀 영역 정리: - Phase 2-B B+C MCP 작업 시 SkillSelectionPanel 자식 영역 중복 (Header/CardArea/Footer × 2 + 빈 Panel2) 영역 발견·정리 - Canvas WorldSpace → ScreenSpaceOverlay 정정 (Phase 2-2 manage_components silent fail 영역) - Image color RGBA(1,1,1,1) → RGBA(0,0,0,0.78) 정정 (execute_code 영역 직접 변경) - Player·SpawnPoint 영역 BT5-Dev 영역 정상 (본 PM 임시 변경 영역 stash 보존) 본 PM 자성 (영구 등재 의무): 1. manage_components set_property silent fail (Color·RectTransform·Canvas) — execute_code 영역 직접 변경 + 호출 직후 검증 의무 2. manage_gameobject batch 결과 검증 X — ReadMcpResource 호출 후 자식 영역 정합 검증 의무 3. 본 BT 영역 외 영역 임의 변경 금지 (Player·SpawnPoint·Camera·Tilemap·BT5-Dev) 4. TMP_FontAsset 검증 = characterTable.Count만 단정 X·isMultiAtlasTexturesEnabled·atlasPopulationMode·TryAddCharacters 동작 확인 의무 5. "영역" 어휘 무차별 부착 자제 (feedback_pm_filler_word_overuse) 6. PD 명시 외 임의 추가 (한자) 금지 PD 결정 (D안): - 기능 검증 우선 (한글 표시·카드 UI·레벨업 흐름 정합) - 그래픽 디테일 (PD 첨부 SD UI 정합) = 차기 BT 영역 후속 (Asset Store sprite 영역 또는 디자이너 영역) C49 표준 — Phase 1 dev-team-lead 설계 + Phase 2 본 PM MCP 집행 + Phase 3 본 PM 직접 검증 (단순 반복 카탈로그 v1)
This commit is contained in:
parent
402c416549
commit
2783c15d56
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 445e8b7a29b7ee9449cdfe6b2caa8ca8
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: db25241073377734488c21ebcc1c475d
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Binary file not shown.
|
|
@ -0,0 +1,21 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 14614220f3838424ba34c5dea3f3dcaf
|
||||
TrueTypeFontImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 4
|
||||
fontSize: 16
|
||||
forceTextureCase: -2
|
||||
characterSpacing: 0
|
||||
characterPadding: 1
|
||||
includeFontData: 1
|
||||
fontNames:
|
||||
- Noto Sans KR
|
||||
fallbackFontReferences: []
|
||||
customCharacters:
|
||||
fontRenderingMode: 0
|
||||
ascentCalculationMode: 1
|
||||
useLegacyBoundsCalculation: 0
|
||||
shouldRoundAdvanceValue: 1
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,7 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 9071d6ddb5d4f854185629ee1970af50
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: b7c3d2e1f4a5689034567890bcdef012
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -4421,6 +4421,179 @@ CanvasRenderer:
|
|||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 121245207}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!1001 &124273342
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 0}
|
||||
m_Modifications:
|
||||
- target: {fileID: 74985464207050684, guid: 9071d6ddb5d4f854185629ee1970af50,
|
||||
type: 3}
|
||||
propertyPath: _rootPanel
|
||||
value:
|
||||
objectReference: {fileID: 124273345}
|
||||
- target: {fileID: 74985464207050684, guid: 9071d6ddb5d4f854185629ee1970af50,
|
||||
type: 3}
|
||||
propertyPath: _titleText
|
||||
value:
|
||||
objectReference: {fileID: 124273344}
|
||||
- target: {fileID: 421312385841554517, guid: 9071d6ddb5d4f854185629ee1970af50,
|
||||
type: 3}
|
||||
propertyPath: m_AdditionalShaderChannelsFlag
|
||||
value: 25
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1008970575067144972, guid: 9071d6ddb5d4f854185629ee1970af50,
|
||||
type: 3}
|
||||
propertyPath: m_Name
|
||||
value: SkillSelectionCanvas
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3550758221024711263, guid: 9071d6ddb5d4f854185629ee1970af50,
|
||||
type: 3}
|
||||
propertyPath: m_Pivot.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3550758221024711263, guid: 9071d6ddb5d4f854185629ee1970af50,
|
||||
type: 3}
|
||||
propertyPath: m_Pivot.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3550758221024711263, guid: 9071d6ddb5d4f854185629ee1970af50,
|
||||
type: 3}
|
||||
propertyPath: m_AnchorMax.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3550758221024711263, guid: 9071d6ddb5d4f854185629ee1970af50,
|
||||
type: 3}
|
||||
propertyPath: m_AnchorMax.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3550758221024711263, guid: 9071d6ddb5d4f854185629ee1970af50,
|
||||
type: 3}
|
||||
propertyPath: m_AnchorMin.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3550758221024711263, guid: 9071d6ddb5d4f854185629ee1970af50,
|
||||
type: 3}
|
||||
propertyPath: m_AnchorMin.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3550758221024711263, guid: 9071d6ddb5d4f854185629ee1970af50,
|
||||
type: 3}
|
||||
propertyPath: m_SizeDelta.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3550758221024711263, guid: 9071d6ddb5d4f854185629ee1970af50,
|
||||
type: 3}
|
||||
propertyPath: m_SizeDelta.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3550758221024711263, guid: 9071d6ddb5d4f854185629ee1970af50,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3550758221024711263, guid: 9071d6ddb5d4f854185629ee1970af50,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3550758221024711263, guid: 9071d6ddb5d4f854185629ee1970af50,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3550758221024711263, guid: 9071d6ddb5d4f854185629ee1970af50,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3550758221024711263, guid: 9071d6ddb5d4f854185629ee1970af50,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3550758221024711263, guid: 9071d6ddb5d4f854185629ee1970af50,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3550758221024711263, guid: 9071d6ddb5d4f854185629ee1970af50,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3550758221024711263, guid: 9071d6ddb5d4f854185629ee1970af50,
|
||||
type: 3}
|
||||
propertyPath: m_AnchoredPosition.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3550758221024711263, guid: 9071d6ddb5d4f854185629ee1970af50,
|
||||
type: 3}
|
||||
propertyPath: m_AnchoredPosition.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3550758221024711263, guid: 9071d6ddb5d4f854185629ee1970af50,
|
||||
type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3550758221024711263, guid: 9071d6ddb5d4f854185629ee1970af50,
|
||||
type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3550758221024711263, guid: 9071d6ddb5d4f854185629ee1970af50,
|
||||
type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3611894027992063499, guid: 9071d6ddb5d4f854185629ee1970af50,
|
||||
type: 3}
|
||||
propertyPath: m_fontColor32.rgba
|
||||
value: 4280365900
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3611894027992063499, guid: 9071d6ddb5d4f854185629ee1970af50,
|
||||
type: 3}
|
||||
propertyPath: m_TextStyleHashCode
|
||||
value: -1183493901
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_RemovedGameObjects: []
|
||||
m_AddedGameObjects: []
|
||||
m_AddedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: 9071d6ddb5d4f854185629ee1970af50, type: 3}
|
||||
--- !u!114 &124273343 stripped
|
||||
MonoBehaviour:
|
||||
m_CorrespondingSourceObject: {fileID: 74985464207050684, guid: 9071d6ddb5d4f854185629ee1970af50,
|
||||
type: 3}
|
||||
m_PrefabInstance: {fileID: 124273342}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 1fa99265a1e5e354cbe04cb09a331bfc, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::EerieVillage.MyUI.SkillSelectionUI
|
||||
--- !u!114 &124273344 stripped
|
||||
MonoBehaviour:
|
||||
m_CorrespondingSourceObject: {fileID: 3611894027992063499, guid: 9071d6ddb5d4f854185629ee1970af50,
|
||||
type: 3}
|
||||
m_PrefabInstance: {fileID: 124273342}
|
||||
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 &124273345 stripped
|
||||
GameObject:
|
||||
m_CorrespondingSourceObject: {fileID: 4733469088043954817, guid: 9071d6ddb5d4f854185629ee1970af50,
|
||||
type: 3}
|
||||
m_PrefabInstance: {fileID: 124273342}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!1 &124348950
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
|
@ -4844,8 +5017,6 @@ MonoBehaviour:
|
|||
m_Script: {fileID: 11500000, guid: 83b023ebe508a49c880fc00552f0dfc1, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
startPosition: {x: 0.25595936, y: 0}
|
||||
endPosition: {x: -0.98063207, y: 0}
|
||||
--- !u!4 &130987215
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
|
|
@ -10550,8 +10721,6 @@ MonoBehaviour:
|
|||
m_Script: {fileID: 11500000, guid: 83b023ebe508a49c880fc00552f0dfc1, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
startPosition: {x: -1.2063255, y: 0}
|
||||
endPosition: {x: 1.3086131, y: 0}
|
||||
--- !u!1 &269822144
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
|
@ -14358,8 +14527,6 @@ MonoBehaviour:
|
|||
m_Script: {fileID: 11500000, guid: 83b023ebe508a49c880fc00552f0dfc1, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
startPosition: {x: -1.5024251, y: 0}
|
||||
endPosition: {x: 1.2943823, y: 0}
|
||||
--- !u!1 &354856842
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
|
@ -118919,8 +119086,6 @@ MonoBehaviour:
|
|||
m_Script: {fileID: 11500000, guid: 83b023ebe508a49c880fc00552f0dfc1, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
startPosition: {x: -2.1479552, y: 0}
|
||||
endPosition: {x: 2.086929, y: 0}
|
||||
--- !u!1001 &669407924
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
|
|
@ -126102,6 +126267,71 @@ CanvasRenderer:
|
|||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 844287356}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!1 &846041740
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 846041743}
|
||||
- component: {fileID: 846041742}
|
||||
- component: {fileID: 846041741}
|
||||
m_Layer: 0
|
||||
m_Name: '[LevelUpManager]'
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!114 &846041741
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 846041740}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 2d141285d4c67174b9cb24f90fcde431, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::EerieVillage.Progression.LevelUpManager
|
||||
_pool: {fileID: 846041742}
|
||||
_ui: {fileID: 124273343}
|
||||
--- !u!114 &846041742
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 846041740}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: be25627e1168e4f48a273684368704a1, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::EerieVillage.Progression.SkillCardPlaceholderPool
|
||||
_allCards:
|
||||
- {fileID: 11400000, guid: f662bfdf77c74a43b7553953bddd20ff, type: 2}
|
||||
- {fileID: 11400000, guid: f360d85ffe424cfaa82666fa4a33f7a4, type: 2}
|
||||
- {fileID: 11400000, guid: 0613252422e54c4e8f0fba1f527d5466, type: 2}
|
||||
- {fileID: 11400000, guid: 29450cbaaebf4a1d849fd58c0cab8b30, type: 2}
|
||||
- {fileID: 11400000, guid: 88f5ca9dc792410eb96fbd99f2114a68, type: 2}
|
||||
--- !u!4 &846041743
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 846041740}
|
||||
serializedVersion: 2
|
||||
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: []
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &852915567
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
|
@ -287885,8 +288115,6 @@ MonoBehaviour:
|
|||
m_Script: {fileID: 11500000, guid: 83b023ebe508a49c880fc00552f0dfc1, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
startPosition: {x: -1.7852057, y: 0}
|
||||
endPosition: {x: 1.9981619, y: 0}
|
||||
--- !u!4 &1379753724
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
|
|
@ -294701,8 +294929,6 @@ MonoBehaviour:
|
|||
m_Script: {fileID: 11500000, guid: 83b023ebe508a49c880fc00552f0dfc1, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
startPosition: {x: -1.9617181, y: 0}
|
||||
endPosition: {x: 2.2367508, y: 0}
|
||||
--- !u!1 &1550066293
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
|
@ -296681,8 +296907,6 @@ MonoBehaviour:
|
|||
m_Script: {fileID: 11500000, guid: 83b023ebe508a49c880fc00552f0dfc1, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
startPosition: {x: -1.5895245, y: 0}
|
||||
endPosition: {x: 3.1613905, y: 0}
|
||||
--- !u!1 &1586130189
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
|
@ -297995,8 +298219,6 @@ MonoBehaviour:
|
|||
m_Script: {fileID: 11500000, guid: 83b023ebe508a49c880fc00552f0dfc1, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
startPosition: {x: -1.3955923, y: 0}
|
||||
endPosition: {x: 4.0990367, y: 0}
|
||||
--- !u!4 &1620406958
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
|
|
@ -304018,8 +304240,6 @@ MonoBehaviour:
|
|||
m_Script: {fileID: 11500000, guid: 83b023ebe508a49c880fc00552f0dfc1, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
startPosition: {x: -1.5895207, y: 0}
|
||||
endPosition: {x: 0.7892328, y: 0}
|
||||
--- !u!4 &1771592756
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
|
|
@ -308456,8 +308676,6 @@ MonoBehaviour:
|
|||
m_Script: {fileID: 11500000, guid: 83b023ebe508a49c880fc00552f0dfc1, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
startPosition: {x: -1.5895207, y: 0}
|
||||
endPosition: {x: 1.9469285, y: 0}
|
||||
--- !u!4 &1830976162
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
|
|
@ -314388,8 +314606,6 @@ MonoBehaviour:
|
|||
m_Script: {fileID: 11500000, guid: 83b023ebe508a49c880fc00552f0dfc1, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
startPosition: {x: -3.267413, y: 0}
|
||||
endPosition: {x: 0.74157184, y: 0}
|
||||
--- !u!4 &1981112391
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
|
|
@ -320902,3 +321118,5 @@ SceneRoots:
|
|||
- {fileID: 311588741}
|
||||
- {fileID: 395934702}
|
||||
- {fileID: 1749083082}
|
||||
- {fileID: 846041743}
|
||||
- {fileID: 124273342}
|
||||
|
|
|
|||
|
|
@ -43,16 +43,20 @@ namespace EerieVillage.MyUI
|
|||
|
||||
void Awake()
|
||||
{
|
||||
// unscaledDeltaTime 정합 영역 — Time.timeScale=0 시 UI 인터랙션 보장 (Animator·EventSystem 영역 PD 추후 검증)
|
||||
Debug.Log($"[SkillSelectionUI] Awake — _rootPanel={(_rootPanel == null ? "NULL" : _rootPanel.name)}");
|
||||
// BT12-MVP-A 정정 (2026-05-08) — Canvas 자체 비활성 (SkillSelectionCanvas Sort Order 200 영역 화면 가림 차단)
|
||||
if (_rootPanel != null) _rootPanel.SetActive(false);
|
||||
gameObject.SetActive(false); // Canvas root 자체 비활성
|
||||
}
|
||||
|
||||
/// <summary>레벨업 시점 호출 — 카드 3장 표시 + 사용자 선택 대기.</summary>
|
||||
public void Show(List<SkillCardPlaceholder> cards, int level, System.Action<SkillCardPlaceholder> onConfirm)
|
||||
{
|
||||
Debug.Log($"[SkillSelectionUI] Show 호출 cards={cards.Count} level={level}");
|
||||
_onConfirm = onConfirm;
|
||||
_selected = null;
|
||||
|
||||
gameObject.SetActive(true); // BT12-MVP-A 정정 — Canvas root 활성
|
||||
if (_rootPanel != null) _rootPanel.SetActive(true);
|
||||
if (_titleText != null) _titleText.text = "기술 선택";
|
||||
if (_pointText != null) _pointText.text = "남은 포인트: 1";
|
||||
|
|
@ -79,6 +83,7 @@ namespace EerieVillage.MyUI
|
|||
public void Hide()
|
||||
{
|
||||
if (_rootPanel != null) _rootPanel.SetActive(false);
|
||||
gameObject.SetActive(false); // BT12-MVP-A 정정 — Canvas root 비활성
|
||||
}
|
||||
|
||||
void BindSlot(SkillCardSlot slot, SkillCardPlaceholder card)
|
||||
|
|
|
|||
|
|
@ -9,15 +9,18 @@ namespace EerieVillage.Progression
|
|||
/// </summary>
|
||||
public static class ExperienceSystem
|
||||
{
|
||||
const int DEFAULT_XP_REWARD = 5;
|
||||
// [BT12-MVP-A 임시] PD 직접 지시 2026-05-09 — 기능 테스트 영역 EXP 보상 1 고정. 차기 BT12-Dev 본격 영역 = enemy_xp_reward.json 분리 + 본 임시 영역 제거 의무.
|
||||
const int DEFAULT_XP_REWARD = 1;
|
||||
|
||||
/// <summary>적 처치 시 호출 — Player 영역 PlayerProgression 갱신.</summary>
|
||||
public static void OnEnemyKilled(EnemyController enemy, PlayerController player)
|
||||
{
|
||||
if (player == null) return;
|
||||
Debug.Log($"[ExperienceSystem] OnEnemyKilled — player={(player == null ? "NULL" : player.name)} enemy={(enemy == null ? "NULL" : enemy.name)}");
|
||||
if (player == null) { Debug.LogWarning("[ExperienceSystem] player == null → EXP 발급 X"); return; }
|
||||
var prog = player.GetComponent<PlayerProgression>();
|
||||
if (prog == null) return;
|
||||
if (prog == null) { Debug.LogWarning("[ExperienceSystem] PlayerProgression == null → 자동 부착 영역 실패 가능"); return; }
|
||||
int xp = ComputeXPReward(enemy);
|
||||
Debug.Log($"[ExperienceSystem] GainXP({xp}) 호출 → PlayerProgression");
|
||||
prog.GainXP(xp);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -59,6 +59,7 @@ namespace EerieVillage.Progression
|
|||
|
||||
void HandleLevelUp(int newLevel)
|
||||
{
|
||||
Debug.Log($"[LevelUpManager] HandleLevelUp 호출 Lv.{newLevel} _ui={(_ui == null ? "NULL" : _ui.name)} _pool={(_pool == null ? "NULL" : _pool.name)}");
|
||||
if (_isLevelUpActive) return;
|
||||
_isLevelUpActive = true;
|
||||
|
||||
|
|
@ -70,10 +71,12 @@ namespace EerieVillage.Progression
|
|||
List<SkillCardPlaceholder> cards = _pool != null
|
||||
? _pool.Draw3Random()
|
||||
: new List<SkillCardPlaceholder>();
|
||||
Debug.Log($"[LevelUpManager] cards.Count={cards.Count}");
|
||||
|
||||
// Phase 2-B 영역 — SkillSelectionUI 정식 호출
|
||||
if (_ui != null)
|
||||
{
|
||||
Debug.Log($"[LevelUpManager] _ui.Show 호출 → SkillSelectionCanvas 활성 의도");
|
||||
_ui.Show(cards, newLevel, HandleCardConfirmed);
|
||||
}
|
||||
else
|
||||
|
|
|
|||
|
|
@ -77,6 +77,11 @@ namespace EerieVillage.Progression
|
|||
/// </summary>
|
||||
public static int GetXPToNextLevel(int level)
|
||||
{
|
||||
// [BT12-MVP-A 임시] PD 직접 지시 2026-05-09 — 기능 테스트 영역 요구 EXP 1 고정.
|
||||
// 차기 BT12-Dev 본격 영역 = 본 임시 영역 제거 + JSON 테이블 영역 정식 활용 의무.
|
||||
return 1;
|
||||
|
||||
#pragma warning disable 0162 // unreachable code (임시 영역)
|
||||
EnsureLoaded();
|
||||
if (level <= 0) return FALLBACK_BASE;
|
||||
if (_cache.TryGetValue(level, out int xp)) return xp;
|
||||
|
|
@ -85,6 +90,7 @@ namespace EerieVillage.Progression
|
|||
return _lastTableXP + FALLBACK_INCREMENT * (level - _maxLevelInTable);
|
||||
}
|
||||
return FALLBACK_BASE + level * FALLBACK_INCREMENT;
|
||||
#pragma warning restore 0162
|
||||
}
|
||||
|
||||
/// <summary>테이블 재로드 (Editor 영역 hot-reload 용).</summary>
|
||||
|
|
|
|||
|
|
@ -26,11 +26,13 @@ namespace EerieVillage.Progression
|
|||
{
|
||||
if (amount <= 0) return;
|
||||
CurrentXP += amount;
|
||||
Debug.Log($"[PlayerProgression] GainXP +{amount} → Lv.{Level} {CurrentXP}/{XPToNextLevel}");
|
||||
while (CurrentXP >= XPToNextLevel)
|
||||
{
|
||||
CurrentXP -= XPToNextLevel;
|
||||
Level++;
|
||||
XPToNextLevel = LevelXPTableLoader.GetXPToNextLevel(Level);
|
||||
Debug.Log($"[PlayerProgression] LEVEL UP → Lv.{Level} (next {XPToNextLevel}) — OnLevelUp 발화");
|
||||
OnLevelUp?.Invoke(Level);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ MonoBehaviour:
|
|||
assetVersion: 2
|
||||
m_TextWrappingMode: 1
|
||||
m_enableKerning: 1
|
||||
m_ActiveFontFeatures: 00000000
|
||||
m_ActiveFontFeatures: 6e72656b
|
||||
m_enableExtraPadding: 0
|
||||
m_enableTintAllSprites: 0
|
||||
m_enableParseEscapeCharacters: 1
|
||||
|
|
@ -33,7 +33,8 @@ MonoBehaviour:
|
|||
m_defaultTextMeshProUITextContainerSize: {x: 200, y: 50}
|
||||
m_autoSizeTextContainer: 0
|
||||
m_IsTextObjectScaleStatic: 0
|
||||
m_fallbackFontAssets: []
|
||||
m_fallbackFontAssets:
|
||||
- {fileID: 11400000, guid: db25241073377734488c21ebcc1c475d, type: 2}
|
||||
m_matchMaterialPreset: 1
|
||||
m_HideSubTextObjects: 0
|
||||
m_defaultSpriteAsset: {fileID: 11400000, guid: c41005c129ba4d66911b75229fd70b45,
|
||||
|
|
|
|||
Loading…
Reference in New Issue