대장간을 이용한 업그레이드 기능 추가

This commit is contained in:
2026-02-23 16:55:32 +09:00
parent 840ddc1c2c
commit e841438997
48 changed files with 1189 additions and 490 deletions

View File

@@ -53,9 +53,11 @@
<Compile Include="Assets\FlatKit\Demos\[Demo] Desert\Scripts\FloatingMotion.cs" /> <Compile Include="Assets\FlatKit\Demos\[Demo] Desert\Scripts\FloatingMotion.cs" />
<Compile Include="Assets\Scripts\PlayerResourceInventory.cs" /> <Compile Include="Assets\Scripts\PlayerResourceInventory.cs" />
<Compile Include="Assets\Scripts\ITeamMember.cs" /> <Compile Include="Assets\Scripts\ITeamMember.cs" />
<Compile Include="Assets\Scripts\UI\UpgradeListItem.cs" />
<Compile Include="Assets\Scripts\EnemyUnit.cs" /> <Compile Include="Assets\Scripts\EnemyUnit.cs" />
<Compile Include="Assets\Scripts\PlayerActionSystem.cs" /> <Compile Include="Assets\Scripts\PlayerActionSystem.cs" />
<Compile Include="Assets\Scripts\BuildingQuickslotUI.cs" /> <Compile Include="Assets\Scripts\BuildingQuickslotUI.cs" />
<Compile Include="Assets\Scripts\UI\UpgradeListPopup.cs" />
<Compile Include="Assets\Scripts\TeamType.cs" /> <Compile Include="Assets\Scripts\TeamType.cs" />
<Compile Include="Assets\Scripts\CoreResourceManager.cs" /> <Compile Include="Assets\Scripts\CoreResourceManager.cs" />
<Compile Include="Assets\Scripts\MapGenerator.cs" /> <Compile Include="Assets\Scripts\MapGenerator.cs" />
@@ -96,6 +98,7 @@
<Compile Include="Assets\InputSystem_Actions.cs" /> <Compile Include="Assets\InputSystem_Actions.cs" />
<Compile Include="Assets\FlatKit\Demos\[Demo] Desert\Scripts\BillboardLineRendererCircle.cs" /> <Compile Include="Assets\FlatKit\Demos\[Demo] Desert\Scripts\BillboardLineRendererCircle.cs" />
<Compile Include="Assets\Scripts\BuildingHealthBar.cs" /> <Compile Include="Assets\Scripts\BuildingHealthBar.cs" />
<Compile Include="Assets\Scripts\RespawnCountdownUI.cs" />
<Compile Include="Assets\Data\Scripts\DataClasses\CreepData.cs" /> <Compile Include="Assets\Data\Scripts\DataClasses\CreepData.cs" />
<Compile Include="Assets\Scripts\PlayerSpawnPoint.cs" /> <Compile Include="Assets\Scripts\PlayerSpawnPoint.cs" />
<Compile Include="Assets\FlatKit\Demos\Common\Scripts\AutoLoadPipelineAsset.cs" /> <Compile Include="Assets\FlatKit\Demos\Common\Scripts\AutoLoadPipelineAsset.cs" />
@@ -118,6 +121,7 @@
<Compile Include="Assets\Scripts\NetworkConfigDebugger.cs" /> <Compile Include="Assets\Scripts\NetworkConfigDebugger.cs" />
<Compile Include="Assets\Data\Scripts\DataClasses\TowerData.cs" /> <Compile Include="Assets\Data\Scripts\DataClasses\TowerData.cs" />
<Compile Include="Assets\Scripts\IAction.cs" /> <Compile Include="Assets\Scripts\IAction.cs" />
<Compile Include="Assets\Scripts\Buildings\Blacksmith.cs" />
<Compile Include="Assets\Scripts\NetworkPlayerController.cs" /> <Compile Include="Assets\Scripts\NetworkPlayerController.cs" />
<Compile Include="Assets\Scripts\PlayerInteraction.cs" /> <Compile Include="Assets\Scripts\PlayerInteraction.cs" />
<Compile Include="Assets\Scripts\FogOfWarVisibility.cs" /> <Compile Include="Assets\Scripts\FogOfWarVisibility.cs" />

View File

@@ -11,6 +11,7 @@ GameObject:
- component: {fileID: 5854748735229546762} - component: {fileID: 5854748735229546762}
- component: {fileID: 4404305322825062480} - component: {fileID: 4404305322825062480}
- component: {fileID: 8736618315465008189} - component: {fileID: 8736618315465008189}
- component: {fileID: 3088394590933577447}
m_Layer: 0 m_Layer: 0
m_Name: Blacksmith m_Name: Blacksmith
m_TagString: Untagged m_TagString: Untagged
@@ -80,6 +81,19 @@ MonoBehaviour:
AutoObjectParentSync: 1 AutoObjectParentSync: 1
SyncOwnerTransformWhenParented: 1 SyncOwnerTransformWhenParented: 1
AllowOwnerToParent: 0 AllowOwnerToParent: 0
--- !u!114 &3088394590933577447
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3769411674882976201}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 39d108eb3babe48409cc4dfc803dbbe4, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Blacksmith
_upgradePopupPrefab: {fileID: 2939937666831822298, guid: 534816991b3afe149b9a117e920d83eb, type: 3}
--- !u!1001 &6017823276457359066 --- !u!1001 &6017823276457359066
PrefabInstance: PrefabInstance:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 633be28f04d3950499d3ebbf2758e23b
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 693a55ca03fd43a418616dd59ef601c9
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: ec21abff735922741a51d7fbbb56aae2
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,27 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4f134815569ad014e9ccc81ddc443c4c, type: 3}
m_Name: Upgrade1
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.UpgradeData
id: 1
memo: "\uCCB4\uB825 \uC99D\uAC00 Lv.1"
upgradeCategory: combat
upgradeTarget: person
mana: 200
requireUpgradeId:
effectStatList:
- player_max_hp
effectOpList:
- add
effectValueList:
- 50
sortOrder: 1

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 44903308c714f6947914cbe297fbdfb7
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,27 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4f134815569ad014e9ccc81ddc443c4c, type: 3}
m_Name: Upgrade10
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.UpgradeData
id: 10
memo: "\uB178\uB3D9\uB825 \uC99D\uAC00 Lv.1"
upgradeCategory: harvest
upgradeTarget: person
mana: 200
requireUpgradeId:
effectStatList:
- player_manpower
effectOpList:
- add
effectValueList:
- 5
sortOrder: 10

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: c4380276ab4a025499ac49c28afc5fe6
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,27 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4f134815569ad014e9ccc81ddc443c4c, type: 3}
m_Name: Upgrade11
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.UpgradeData
id: 11
memo: "\uB178\uB3D9\uB825 \uC99D\uAC00 Lv.2"
upgradeCategory: harvest
upgradeTarget: person
mana: 300
requireUpgradeId: 0a000000
effectStatList:
- player_manpower
effectOpList:
- add
effectValueList:
- 10
sortOrder: 11

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: cf5af8525b9d7c34da291f64cd18cc5a
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,27 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4f134815569ad014e9ccc81ddc443c4c, type: 3}
m_Name: Upgrade12
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.UpgradeData
id: 12
memo: "\uB178\uB3D9\uB825 \uC99D\uAC00 Lv.3"
upgradeCategory: harvest
upgradeTarget: person
mana: 400
requireUpgradeId: 070000000a000000
effectStatList:
- player_manpower
effectOpList:
- add
effectValueList:
- 20
sortOrder: 12

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 4e85b0527bc16124ba251da975a08b7d
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,27 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4f134815569ad014e9ccc81ddc443c4c, type: 3}
m_Name: Upgrade13
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.UpgradeData
id: 13
memo: "\uC774\uB3D9\uC18D\uB3C4 \uC99D\uAC00 Lv.1"
upgradeCategory: scout
upgradeTarget: person
mana: 200
requireUpgradeId:
effectStatList:
- player_move_speed
effectOpList:
- mul
effectValueList:
- 1.1
sortOrder: 13

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: b97eb48c01c4c5b449497d8f3657921e
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,27 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4f134815569ad014e9ccc81ddc443c4c, type: 3}
m_Name: Upgrade14
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.UpgradeData
id: 14
memo: "\uC774\uB3D9\uC18D\uB3C4 \uC99D\uAC00 Lv.2"
upgradeCategory: scout
upgradeTarget: person
mana: 300
requireUpgradeId: 0d000000
effectStatList:
- player_move_speed
effectOpList:
- mul
effectValueList:
- 1.2
sortOrder: 14

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: e19c880ad7090f2459ce181137ae0d52
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,27 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4f134815569ad014e9ccc81ddc443c4c, type: 3}
m_Name: Upgrade15
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.UpgradeData
id: 15
memo: "\uC774\uB3D9\uC18D\uB3C4 \uC99D\uAC00 Lv.3"
upgradeCategory: scout
upgradeTarget: person
mana: 400
requireUpgradeId: 0e000000
effectStatList:
- player_move_speed
effectOpList:
- mul
effectValueList:
- 1.3
sortOrder: 15

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: e70470dae56a6324485c325baa2a09cd
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,27 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4f134815569ad014e9ccc81ddc443c4c, type: 3}
m_Name: Upgrade2
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.UpgradeData
id: 2
memo: "\uCCB4\uB825 \uC99D\uAC00 Lv.2"
upgradeCategory: combat
upgradeTarget: person
mana: 300
requireUpgradeId: 01000000
effectStatList:
- player_max_hp
effectOpList:
- add
effectValueList:
- 100
sortOrder: 2

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: b6c266c42e14ff843b601a91f2329bea
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,27 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4f134815569ad014e9ccc81ddc443c4c, type: 3}
m_Name: Upgrade3
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.UpgradeData
id: 3
memo: "\uCCB4\uB825 \uC99D\uAC00 Lv.3"
upgradeCategory: combat
upgradeTarget: person
mana: 400
requireUpgradeId: 0200000005000000
effectStatList:
- player_max_hp
effectOpList:
- add
effectValueList:
- 150
sortOrder: 3

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 19d1eec49f4c40b4983579b5153e6d17
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,27 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4f134815569ad014e9ccc81ddc443c4c, type: 3}
m_Name: Upgrade4
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.UpgradeData
id: 4
memo: "\uACF5\uACA9\uB825 \uC99D\uAC00 Lv.1"
upgradeCategory: combat
upgradeTarget: person
mana: 200
requireUpgradeId:
effectStatList:
- player_atk_damage
effectOpList:
- add
effectValueList:
- 5
sortOrder: 4

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 753e2ab2fa8922841be9a8d1b10947b7
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,27 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4f134815569ad014e9ccc81ddc443c4c, type: 3}
m_Name: Upgrade5
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.UpgradeData
id: 5
memo: "\uACF5\uACA9\uB825 \uC99D\uAC00 Lv.2"
upgradeCategory: combat
upgradeTarget: person
mana: 300
requireUpgradeId: 04000000
effectStatList:
- player_atk_damage
effectOpList:
- add
effectValueList:
- 10
sortOrder: 5

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: a6714280457a76540a7be17859d22d2d
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,27 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4f134815569ad014e9ccc81ddc443c4c, type: 3}
m_Name: Upgrade6
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.UpgradeData
id: 6
memo: "\uACF5\uACA9\uB825 \uC99D\uAC00 Lv.3"
upgradeCategory: combat
upgradeTarget: person
mana: 400
requireUpgradeId: 0200000005000000
effectStatList:
- player_atk_damage
effectOpList:
- add
effectValueList:
- 15
sortOrder: 6

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 88112bf6f5fac2b48b232ccbfba2db39
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,27 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4f134815569ad014e9ccc81ddc443c4c, type: 3}
m_Name: Upgrade7
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.UpgradeData
id: 7
memo: "\uC790\uC6D0 \uCD5C\uB300 \uC6A9\uB7C9 \uC99D\uAC00 Lv.1"
upgradeCategory: harvest
upgradeTarget: person
mana: 200
requireUpgradeId:
effectStatList:
- player_capacity
effectOpList:
- add
effectValueList:
- 20
sortOrder: 7

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 4ab81608eee38814fbf6aa212e1be77f
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,27 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4f134815569ad014e9ccc81ddc443c4c, type: 3}
m_Name: Upgrade8
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.UpgradeData
id: 8
memo: "\uC790\uC6D0 \uCD5C\uB300 \uC6A9\uB7C9 \uC99D\uAC00 Lv.2"
upgradeCategory: harvest
upgradeTarget: person
mana: 300
requireUpgradeId: 07000000
effectStatList:
- player_capacity
effectOpList:
- add
effectValueList:
- 50
sortOrder: 8

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 2d2e1368141991b4094242daed1d2214
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,27 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4f134815569ad014e9ccc81ddc443c4c, type: 3}
m_Name: Upgrade9
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.UpgradeData
id: 9
memo: "\uC790\uC6D0 \uCD5C\uB300 \uC6A9\uB7C9 \uC99D\uAC00 Lv.3"
upgradeCategory: harvest
upgradeTarget: person
mana: 400
requireUpgradeId: 070000000a000000
effectStatList:
- player_capacity
effectOpList:
- add
effectValueList:
- 100
sortOrder: 9

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 07d8f3587bbbbb74e983ee9d0a175e49
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -2069,7 +2069,6 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 12780dc9ee390c742b6cbd405e59a916, type: 3} m_Script: {fileID: 11500000, guid: 12780dc9ee390c742b6cbd405e59a916, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: Assembly-CSharp::Northbound.UpgradeDatabase m_EditorClassIdentifier: Assembly-CSharp::Northbound.UpgradeDatabase
_upgradeDataList: []
--- !u!224 &1282800775 stripped --- !u!224 &1282800775 stripped
RectTransform: RectTransform:
m_CorrespondingSourceObject: {fileID: 8873176760615364646, guid: a470599cc0481164ab487ecf39b1ebd0, type: 3} m_CorrespondingSourceObject: {fileID: 8873176760615364646, guid: a470599cc0481164ab487ecf39b1ebd0, type: 3}
@@ -3042,6 +3041,10 @@ PrefabInstance:
propertyPath: m_Name propertyPath: m_Name
value: Blacksmith value: Blacksmith
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 3769411674882976201, guid: 368961a0f2d71ce4aad5d8ffe52e0b7f, type: 3}
propertyPath: m_Layer
value: 7
objectReference: {fileID: 0}
- target: {fileID: 5854748735229546762, guid: 368961a0f2d71ce4aad5d8ffe52e0b7f, type: 3} - target: {fileID: 5854748735229546762, guid: 368961a0f2d71ce4aad5d8ffe52e0b7f, type: 3}
propertyPath: m_LocalPosition.x propertyPath: m_LocalPosition.x
value: 20 value: 20
@@ -3082,14 +3085,14 @@ PrefabInstance:
propertyPath: m_LocalEulerAnglesHint.z propertyPath: m_LocalEulerAnglesHint.z
value: 0 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 6864316733236988811, guid: 368961a0f2d71ce4aad5d8ffe52e0b7f, type: 3}
propertyPath: m_Layer
value: 7
objectReference: {fileID: 0}
- target: {fileID: 8736618315465008189, guid: 368961a0f2d71ce4aad5d8ffe52e0b7f, type: 3} - target: {fileID: 8736618315465008189, guid: 368961a0f2d71ce4aad5d8ffe52e0b7f, type: 3}
propertyPath: GlobalObjectIdHash propertyPath: GlobalObjectIdHash
value: 1738409839 value: 1738409839
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 9130994837512732106, guid: 368961a0f2d71ce4aad5d8ffe52e0b7f, type: 3}
propertyPath: m_Convex
value: 1
objectReference: {fileID: 0}
m_RemovedComponents: [] m_RemovedComponents: []
m_RemovedGameObjects: [] m_RemovedGameObjects: []
m_AddedGameObjects: [] m_AddedGameObjects: []

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 3cdca32e565bc4942912b9bc2233349e
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,126 @@
using UnityEngine;
using Unity.Netcode;
namespace Northbound
{
/// <summary>
/// 블랙스미스 건물 - 업그레이드 구매 가능
/// </summary>
public class Blacksmith : MonoBehaviour, IInteractable
{
[Header("UI Reference")]
[SerializeField] private GameObject _upgradePopupPrefab;
private GameObject _popupInstance;
private UpgradeListPopup _upgradePopup;
private void Awake()
{
// 프리팹이 없으면 Resources에서 로드
if (_upgradePopupPrefab == null)
{
_upgradePopupPrefab = Resources.Load<GameObject>("UI/Upgrade/UpgradeListPopup");
}
}
#region IInteractable Implementation
public bool CanInteract(ulong playerId)
{
return true;
}
public void Interact(ulong playerId)
{
OpenUpgradePopup(playerId);
}
public string GetInteractionPrompt()
{
return "[F] 업그레이드";
}
public string GetInteractionAnimation()
{
return "";
}
public EquipmentData GetEquipmentData()
{
return null;
}
public Transform GetTransform()
{
return transform;
}
#endregion
private void OpenUpgradePopup(ulong playerId)
{
// 플레이어의 UpgradeManager와 Stats 찾기
var playerObj = GetPlayerObject(playerId);
if (playerObj == null)
{
Debug.LogWarning($"[Blacksmith] 플레이어 {playerId}를 찾을 수 없습니다.");
return;
}
var upgradeManager = playerObj.GetComponent<PlayerUpgradeManager>();
var playerStats = playerObj.GetComponent<PlayerStats>();
if (upgradeManager == null || playerStats == null)
{
Debug.LogWarning("[Blacksmith] PlayerUpgradeManager 또는 PlayerStats가 없습니다.");
return;
}
// 팝업 생성
if (_popupInstance == null && _upgradePopupPrefab != null)
{
_popupInstance = Instantiate(_upgradePopupPrefab);
_upgradePopup = _popupInstance.GetComponent<UpgradeListPopup>();
if (_upgradePopup == null)
{
_upgradePopup = _popupInstance.AddComponent<UpgradeListPopup>();
}
}
// 팝업 초기화 및 열기
if (_upgradePopup != null)
{
_upgradePopup.Initialize(upgradeManager, playerStats);
}
}
private GameObject GetPlayerObject(ulong playerId)
{
if (NetworkManager.Singleton == null) return null;
// NetworkManager에서 플레이어 오브젝트 찾기
foreach (var netObj in NetworkManager.Singleton.SpawnManager.SpawnedObjects.Values)
{
var controller = netObj.GetComponent<NetworkPlayerController>();
if (controller != null && controller.OwnerPlayerId == playerId)
{
return netObj.gameObject;
}
}
return null;
}
private void OnDestroy()
{
if (_popupInstance != null)
{
Destroy(_popupInstance);
}
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 39d108eb3babe48409cc4dfc803dbbe4

View File

@@ -140,5 +140,26 @@ namespace Northbound
public void SetBaseAttackRange(float value) => baseAttackRange = value; public void SetBaseAttackRange(float value) => baseAttackRange = value;
#endregion #endregion
/// <summary>
/// 현재 스탯 정보 출력 (디버그용)
/// </summary>
public void PrintCurrentStats()
{
Debug.Log($"<color=cyan>[PlayerStats] 현재 스탯:</color>\n" +
$" Max HP: {GetMaxHp()} (기본: {baseMaxHp})\n" +
$" Damage: {GetDamage()} (기본: {baseDamage})\n" +
$" Capacity: {GetCapacity()} (기본: {baseCapacity})\n" +
$" Manpower: {GetManpower()} (기본: {baseManpower})\n" +
$" Move Speed: {GetMoveSpeed()} (기본: {baseMoveSpeed})\n" +
$" Sight: {GetSight()} (기본: {baseSight})\n" +
$" Attack Range: {GetAttackRange()} (기본: {baseAttackRange})");
if (_upgradeManager != null)
{
var ownedIds = _upgradeManager.GetOwnedUpgradeIdList();
Debug.Log($"<color=cyan>[PlayerStats] 보유 업그레이드 수: {ownedIds.Count}</color>");
}
}
} }
} }

View File

@@ -143,6 +143,10 @@ namespace Northbound
Debug.Log($"<color=green>[PlayerUpgradeManager] 업그레이드 '{upgrade.memo}' 구매 완료! (ID: {upgradeId})</color>"); Debug.Log($"<color=green>[PlayerUpgradeManager] 업그레이드 '{upgrade.memo}' 구매 완료! (ID: {upgradeId})</color>");
// 스탯 변경 확인
var playerStats = GetComponent<PlayerStats>();
playerStats?.PrintCurrentStats();
// 이벤트 발생 // 이벤트 발생
OnUpgradePurchased?.Invoke(upgradeId); OnUpgradePurchased?.Invoke(upgradeId);
} }

8
Assets/Scripts/UI.meta Normal file
View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 00eb5c70ed6dd1840841026ff5a16805
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,228 @@
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
using Northbound.Data;
namespace Northbound
{
/// <summary>
/// 업그레이드 리스트 아이템 UI
/// </summary>
public class UpgradeListItem : MonoBehaviour, IPointerClickHandler
{
[Header("UI References")]
[SerializeField] private TextMeshProUGUI _nameText;
[SerializeField] private TextMeshProUGUI _costText;
[SerializeField] private Transform _effectRowsParent;
[SerializeField] private Transform _reqChipsParent;
[SerializeField] private Button _purchaseButton;
[SerializeField] private GameObject _purchasedOverlay;
[SerializeField] private Image _backgroundImage;
private UpgradeData _upgradeData;
private bool _isOwned;
private bool _canPurchase;
private UpgradeListPopup _parentPopup;
private Color _normalColor = new Color(1f, 1f, 1f, 0.44f); // 기본 배경색
private Color _disabledColor = new Color(0.5f, 0.5f, 0.5f, 0.6f); // 회색
private void Awake()
{
if (_purchaseButton == null)
{
_purchaseButton = GetComponent<Button>();
}
if (_purchaseButton != null)
{
_purchaseButton.onClick.AddListener(OnPurchaseClicked);
}
if (_backgroundImage == null)
{
_backgroundImage = GetComponent<Image>();
}
}
/// <summary>
/// 아이템 설정
/// </summary>
public void Setup(UpgradeData upgrade, bool isOwned, bool canPurchase, UpgradeListPopup parentPopup)
{
_upgradeData = upgrade;
_isOwned = isOwned;
_canPurchase = canPurchase;
_parentPopup = parentPopup;
UpdateUI();
}
private void UpdateUI()
{
if (_upgradeData == null) return;
// 이름
if (_nameText != null)
{
_nameText.text = _upgradeData.memo;
}
// 비용
if (_costText != null)
{
_costText.text = $"Cost: {_upgradeData.mana}";
}
// 구매 가능 여부 확인 (비용 체크 포함)
bool hasEnoughResources = CheckHasEnoughResources();
bool isAvailable = _canPurchase && !_isOwned && hasEnoughResources;
// 구매 불가능한 경우 회색 처리
if (_backgroundImage != null)
{
_backgroundImage.color = isAvailable ? _normalColor : _disabledColor;
}
// 이름 텍스트 색상도 변경
if (_nameText != null)
{
_nameText.color = isAvailable ? Color.white : Color.gray;
}
// 비용 텍스트 색상 (자원 부족 시 빨간색)
if (_costText != null)
{
_costText.color = hasEnoughResources ? Color.white : Color.red;
}
// 구매 버튼 - 항상 클릭 가능하게 설정
if (_purchaseButton != null)
{
_purchaseButton.interactable = true;
}
// 구매 완료 오버레이
if (_purchasedOverlay != null)
{
_purchasedOverlay.SetActive(_isOwned);
}
// 효과 표시
UpdateEffectRows();
// 선행조건 표시
UpdateReqChips();
}
/// <summary>
/// 자원이 충분한지 확인
/// </summary>
private bool CheckHasEnoughResources()
{
var core = CoreResourceManager.Instance?.mainCore;
if (core == null) return false;
return core.TotalResources >= _upgradeData.mana;
}
private void UpdateEffectRows()
{
if (_effectRowsParent == null || _upgradeData == null) return;
// 기존 자식 제거
foreach (Transform child in _effectRowsParent)
{
Destroy(child.gameObject);
}
// 효과 목록 생성
for (int i = 0; i < _upgradeData.effectStatList.Count; i++)
{
if (i >= _upgradeData.effectOpList.Count || i >= _upgradeData.effectValueList.Count)
break;
string statName = FormatStatName(_upgradeData.effectStatList[i]);
string op = _upgradeData.effectOpList[i];
float value = _upgradeData.effectValueList[i];
// 간단한 텍스트로 표시 (EffectRow 프리팹이 없는 경우)
var textObj = new GameObject($"Effect_{i}");
textObj.transform.SetParent(_effectRowsParent);
var text = textObj.AddComponent<TextMeshProUGUI>();
text.text = $"{statName}: {FormatValue(op, value)}";
text.fontSize = 24;
}
}
private void UpdateReqChips()
{
if (_reqChipsParent == null || _upgradeData == null) return;
// 기존 자식 제거
foreach (Transform child in _reqChipsParent)
{
Destroy(child.gameObject);
}
// 선행조건이 없으면 표시하지 않음
if (_upgradeData.requireUpgradeId.Count == 0) return;
foreach (int reqId in _upgradeData.requireUpgradeId)
{
var database = UpgradeDatabase.Instance;
var reqUpgrade = database?.GetUpgradeById(reqId);
if (reqUpgrade == null) continue;
// 간단한 텍스트로 표시 (ReqChip 프리팹이 없는 경우)
var textObj = new GameObject($"Req_{reqId}");
textObj.transform.SetParent(_reqChipsParent);
var text = textObj.AddComponent<TextMeshProUGUI>();
text.text = $"Requires: {reqUpgrade.memo}";
text.fontSize = 20;
text.color = Color.yellow;
}
}
private string FormatStatName(string stat)
{
return stat switch
{
"player_max_hp" => "Max HP",
"player_atk_damage" => "ATK Damage",
"player_capacity" => "Capacity",
"player_manpower" => "Manpower",
"player_move_speed" => "Move Speed",
"player_sight" => "Sight",
"player_atk_range" => "ATK Range",
_ => stat
};
}
private string FormatValue(string op, float value)
{
return op switch
{
"add" => $"+{value}",
"mul" => $"x{value}",
"set" => $"{value}",
_ => $"{value}"
};
}
private void OnPurchaseClicked()
{
if (_upgradeData == null || _parentPopup == null) return;
if (_isOwned || !_canPurchase) return;
_parentPopup.RequestPurchase(_upgradeData.id);
}
// IPointerClickHandler 구현 - 직접 클릭 감지
public void OnPointerClick(PointerEventData eventData)
{
OnPurchaseClicked();
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: bb93da116066efb4f95f04229c90a069

View File

@@ -0,0 +1,175 @@
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.UI;
using Northbound.Data;
namespace Northbound
{
/// <summary>
/// 업그레이드 목록 팝업 UI 컨트롤러
/// </summary>
public class UpgradeListPopup : MonoBehaviour
{
[Header("References")]
[SerializeField] private Transform _contentParent;
[SerializeField] private GameObject _listItemPrefab;
[SerializeField] private TextMeshProUGUI _manaText;
[SerializeField] private Button _closeButton;
private PlayerUpgradeManager _playerUpgradeManager;
private PlayerStats _playerStats;
private List<UpgradeListItem> _listItems = new List<UpgradeListItem>();
private void Awake()
{
if (_closeButton != null)
{
_closeButton.onClick.AddListener(Close);
}
}
private void Update()
{
// ESC 키로 닫기
if (Keyboard.current != null && Keyboard.current.escapeKey.wasPressedThisFrame)
{
Close();
}
// 마나 텍스트 업데이트
UpdateManaDisplay();
}
/// <summary>
/// 팝업 초기화
/// </summary>
public void Initialize(PlayerUpgradeManager upgradeManager, PlayerStats playerStats)
{
_playerUpgradeManager = upgradeManager;
_playerStats = playerStats;
RefreshList();
UpdateManaDisplay();
gameObject.SetActive(true);
}
/// <summary>
/// 업그레이드 목록 갱신
/// </summary>
public void RefreshList()
{
// 기존 아이템 제거
ClearList();
if (_playerUpgradeManager == null) return;
var database = UpgradeDatabase.Instance;
if (database == null)
{
Debug.LogWarning("[UpgradeListPopup] UpgradeDatabase를 찾을 수 없습니다.");
return;
}
// 개인 업그레이드 목록 가져오기
var allUpgrades = database.GetPersonalUpgrades();
var ownedIds = _playerUpgradeManager.GetOwnedUpgradeIdSet();
foreach (var upgrade in allUpgrades)
{
if (upgrade == null) continue;
bool isOwned = ownedIds.Contains(upgrade.id);
bool prerequisitesMet = database.ArePrerequisitesMet(upgrade.id, ownedIds);
// 이미 구매했거나, 선행조건이 충족된 항목만 표시
if (!isOwned && !prerequisitesMet) continue;
bool canPurchase = !isOwned && prerequisitesMet;
CreateListItem(upgrade, isOwned, canPurchase);
}
}
/// <summary>
/// 리스트 아이템 생성
/// </summary>
private void CreateListItem(UpgradeData upgrade, bool isOwned, bool canPurchase)
{
if (_listItemPrefab == null || _contentParent == null) return;
GameObject itemObj = Instantiate(_listItemPrefab, _contentParent);
var listItem = itemObj.GetComponent<UpgradeListItem>();
if (listItem != null)
{
listItem.Setup(upgrade, isOwned, canPurchase, this);
_listItems.Add(listItem);
}
else
{
// UpgradeListItem 컴포넌트가 없으면 추가
listItem = itemObj.AddComponent<UpgradeListItem>();
listItem.Setup(upgrade, isOwned, canPurchase, this);
_listItems.Add(listItem);
}
}
/// <summary>
/// 리스트 비우기
/// </summary>
private void ClearList()
{
foreach (var item in _listItems)
{
if (item != null && item.gameObject != null)
{
Destroy(item.gameObject);
}
}
_listItems.Clear();
}
/// <summary>
/// 업그레이드 구매 요청
/// </summary>
public void RequestPurchase(int upgradeId)
{
if (_playerUpgradeManager == null) return;
_playerUpgradeManager.RequestPurchaseUpgrade(upgradeId);
// 구매 후 목록 갱신
RefreshList();
UpdateManaDisplay();
}
/// <summary>
/// 마나 표시 업데이트
/// </summary>
private void UpdateManaDisplay()
{
if (_manaText == null) return;
var core = CoreResourceManager.Instance?.mainCore;
if (core != null)
{
_manaText.text = $"MANA: {core.TotalResources}";
}
}
/// <summary>
/// 팝업 닫기
/// </summary>
public void Close()
{
gameObject.SetActive(false);
}
private void OnDestroy()
{
ClearList();
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 1d9a732b420252f48bfa530b3f90d50b

View File

@@ -333,6 +333,7 @@ GameObject:
- component: {fileID: 7447875851268896590} - component: {fileID: 7447875851268896590}
- component: {fileID: 3288821915927481807} - component: {fileID: 3288821915927481807}
- component: {fileID: 749768835124022541} - component: {fileID: 749768835124022541}
- component: {fileID: 6459707425282001148}
m_Layer: 5 m_Layer: 5
m_Name: UpgradeListItem m_Name: UpgradeListItem
m_TagString: Untagged m_TagString: Untagged
@@ -488,6 +489,24 @@ MonoBehaviour:
m_ChildScaleWidth: 0 m_ChildScaleWidth: 0
m_ChildScaleHeight: 0 m_ChildScaleHeight: 0
m_ReverseArrangement: 0 m_ReverseArrangement: 0
--- !u!114 &6459707425282001148
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2795598443286681468}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: bb93da116066efb4f95f04229c90a069, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::Northbound.UpgradeListItem
_nameText: {fileID: 3726533546712853709}
_costText: {fileID: 1143243761793514059}
_effectRowsParent: {fileID: 1344126301484243612}
_reqChipsParent: {fileID: 0}
_purchaseButton: {fileID: 0}
_purchasedOverlay: {fileID: 0}
--- !u!1 &3106219607703453361 --- !u!1 &3106219607703453361
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0

View File

@@ -29,8 +29,7 @@ RectTransform:
m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: m_Children: []
- {fileID: 6730114662071145586}
m_Father: {fileID: 5142664061421472895} m_Father: {fileID: 5142664061421472895}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1} m_AnchorMin: {x: 0, y: 1}
@@ -795,6 +794,7 @@ GameObject:
- component: {fileID: 3718601502365808758} - component: {fileID: 3718601502365808758}
- component: {fileID: 278623561267139967} - component: {fileID: 278623561267139967}
- component: {fileID: 1309617028508257290} - component: {fileID: 1309617028508257290}
- component: {fileID: 8852688469295333022}
m_Layer: 5 m_Layer: 5
m_Name: UpgradeListPopup m_Name: UpgradeListPopup
m_TagString: Untagged m_TagString: Untagged
@@ -815,7 +815,6 @@ RectTransform:
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: m_Children:
- {fileID: 5535483076147047276} - {fileID: 5535483076147047276}
- {fileID: 3321944725984254385}
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0} m_AnchorMin: {x: 0, y: 0}
@@ -844,7 +843,7 @@ Canvas:
m_AdditionalShaderChannelsFlag: 25 m_AdditionalShaderChannelsFlag: 25
m_UpdateRectTransformForStandalone: 0 m_UpdateRectTransformForStandalone: 0
m_SortingLayerID: 0 m_SortingLayerID: 0
m_SortingOrder: 0 m_SortingOrder: 100
m_TargetDisplay: 0 m_TargetDisplay: 0
--- !u!114 &3718601502365808758 --- !u!114 &3718601502365808758
MonoBehaviour: MonoBehaviour:
@@ -898,6 +897,22 @@ CanvasGroup:
m_Interactable: 1 m_Interactable: 1
m_BlocksRaycasts: 1 m_BlocksRaycasts: 1
m_IgnoreParentGroups: 0 m_IgnoreParentGroups: 0
--- !u!114 &8852688469295333022
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2939937666831822298}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1d9a732b420252f48bfa530b3f90d50b, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::Northbound.UpgradeListPopup
_contentParent: {fileID: 4881393066953859400}
_listItemPrefab: {fileID: 2795598443286681468, guid: c571cad31de0cc341b86870131c0c193, type: 3}
_manaText: {fileID: 0}
_closeButton: {fileID: 6858260285958720524}
--- !u!1 &3985956384381968912 --- !u!1 &3985956384381968912
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -1365,484 +1380,3 @@ MonoBehaviour:
m_ChildScaleWidth: 0 m_ChildScaleWidth: 0
m_ChildScaleHeight: 0 m_ChildScaleHeight: 0
m_ReverseArrangement: 0 m_ReverseArrangement: 0
--- !u!1 &8183752485758582026
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3321944725984254385}
- component: {fileID: 6813128167282951502}
- component: {fileID: 2106102456675661953}
m_Layer: 5
m_Name: DimBackground
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &3321944725984254385
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8183752485758582026}
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: 1115866039617900744}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &6813128167282951502
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8183752485758582026}
m_CullTransparentMesh: 1
--- !u!114 &2106102456675661953
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8183752485758582026}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image
m_Material: {fileID: 0}
m_Color: {r: 0, g: 0, b: 0, a: 0.47058824}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 0}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1001 &938658732774596784
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 4881393066953859400}
m_Modifications:
- target: {fileID: 23938887878820491, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 23938887878820491, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 23938887878820491, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 23938887878820491, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1143243761793514059, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_fontAsset
value:
objectReference: {fileID: 11400000, guid: 72491e21fef70124c9ebc25ff62fd3e9, type: 2}
- target: {fileID: 1143243761793514059, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_sharedMaterial
value:
objectReference: {fileID: 9147849279665769802, guid: 72491e21fef70124c9ebc25ff62fd3e9, type: 2}
- target: {fileID: 1143243761793514059, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_hasFontAssetChanged
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1208905115009395303, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1208905115009395303, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1208905115009395303, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1208905115009395303, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1208905115009395303, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1344126301484243612, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1344126301484243612, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1344126301484243612, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1344126301484243612, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2226697209749816731, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2226697209749816731, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2226697209749816731, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2226697209749816731, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2226697209749816731, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2356475857675880722, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2356475857675880722, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2356475857675880722, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2356475857675880722, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2356475857675880722, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2654563527520665841, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_fontAsset
value:
objectReference: {fileID: 11400000, guid: 72491e21fef70124c9ebc25ff62fd3e9, type: 2}
- target: {fileID: 2654563527520665841, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_hasFontAssetChanged
value: 1
objectReference: {fileID: 0}
- target: {fileID: 2795598443286681468, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_Name
value: UpgradeListItem
objectReference: {fileID: 0}
- target: {fileID: 3033923183962451313, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3033923183962451313, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3033923183962451313, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3726533546712853709, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_fontAsset
value:
objectReference: {fileID: 11400000, guid: 72491e21fef70124c9ebc25ff62fd3e9, type: 2}
- target: {fileID: 3726533546712853709, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_sharedMaterial
value:
objectReference: {fileID: 9147849279665769802, guid: 72491e21fef70124c9ebc25ff62fd3e9, type: 2}
- target: {fileID: 3726533546712853709, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_hasFontAssetChanged
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4199112337488575021, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4199112337488575021, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4199112337488575021, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4199112337488575021, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5130258726569370364, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5130258726569370364, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5130258726569370364, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5130258726569370364, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5130258726569370364, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5253293561056983172, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5253293561056983172, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5253293561056983172, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5303976041113365752, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5303976041113365752, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5303976041113365752, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5791878178674783426, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_Pivot.x
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 5791878178674783426, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_Pivot.y
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 5791878178674783426, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchorMax.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5791878178674783426, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5791878178674783426, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchorMin.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5791878178674783426, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5791878178674783426, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5791878178674783426, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5791878178674783426, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5791878178674783426, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5791878178674783426, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5791878178674783426, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 5791878178674783426, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5791878178674783426, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5791878178674783426, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5791878178674783426, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5791878178674783426, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5791878178674783426, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5791878178674783426, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5791878178674783426, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6155001343736170242, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6155001343736170242, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6155001343736170242, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6155001343736170242, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6759678908035437900, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6759678908035437900, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6759678908035437900, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6759678908035437900, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6759678908035437900, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6872586119889087579, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6872586119889087579, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6872586119889087579, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6872586119889087579, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7013760708497480791, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7013760708497480791, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7013760708497480791, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7013760708497480791, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7013760708497480791, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7609073724974482486, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7609073724974482486, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7609073724974482486, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7609073724974482486, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8426224348524045783, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8426224348524045783, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8426224348524045783, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8426224348524045783, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8426224348524045783, guid: c571cad31de0cc341b86870131c0c193, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: c571cad31de0cc341b86870131c0c193, type: 3}
--- !u!224 &6730114662071145586 stripped
RectTransform:
m_CorrespondingSourceObject: {fileID: 5791878178674783426, guid: c571cad31de0cc341b86870131c0c193, type: 3}
m_PrefabInstance: {fileID: 938658732774596784}
m_PrefabAsset: {fileID: 0}