Compare commits
21 Commits
1c77c5d9cd
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 7fc457a384 | |||
| 8093cca251 | |||
| c34b9df4f7 | |||
|
|
3aa43bfd20 | ||
|
|
5284ffc153 | ||
| 20167a8a52 | |||
| 9951aa98b2 | |||
| 600f35ae8f | |||
| a4eae438de | |||
| 72fe5e5b04 | |||
| 93d326e692 | |||
|
|
863e98a53f | ||
|
|
a979013b73 | ||
| 9c6a9910cb | |||
| b3a9823f49 | |||
| 0a2119a548 | |||
| 23429ec096 | |||
| 2f7eac05ce | |||
| 9a010524f2 | |||
| 34ab12a093 | |||
| d066290607 |
@@ -67,7 +67,6 @@
|
|||||||
<Compile Include="Assets\Scripts\FogOfWarRenderer.cs" />
|
<Compile Include="Assets\Scripts\FogOfWarRenderer.cs" />
|
||||||
<Compile Include="Assets\Scripts\ResourcePickup.cs" />
|
<Compile Include="Assets\Scripts\ResourcePickup.cs" />
|
||||||
<Compile Include="Assets\Scripts\PlayerVisionProvider.cs" />
|
<Compile Include="Assets\Scripts\PlayerVisionProvider.cs" />
|
||||||
<Compile Include="Assets\Scripts\PlayerController.cs" />
|
|
||||||
<Compile Include="Assets\FlatKit\Demos\Common\Scripts\Motion\OrbitMotion.cs" />
|
<Compile Include="Assets\FlatKit\Demos\Common\Scripts\Motion\OrbitMotion.cs" />
|
||||||
<Compile Include="Assets\Scripts\CreepCamp.cs" />
|
<Compile Include="Assets\Scripts\CreepCamp.cs" />
|
||||||
<Compile Include="Assets\Scripts\EnemyAIController.cs" />
|
<Compile Include="Assets\Scripts\EnemyAIController.cs" />
|
||||||
@@ -83,6 +82,7 @@
|
|||||||
<Compile Include="Assets\Scripts\Resource.cs" />
|
<Compile Include="Assets\Scripts\Resource.cs" />
|
||||||
<Compile Include="Assets\Data\Scripts\DataClasses\UpgradeData.cs" />
|
<Compile Include="Assets\Data\Scripts\DataClasses\UpgradeData.cs" />
|
||||||
<Compile Include="Assets\Scripts\UpgradeDatabase.cs" />
|
<Compile Include="Assets\Scripts\UpgradeDatabase.cs" />
|
||||||
|
<Compile Include="Assets\Scripts\UI\TeamHealthUI.cs" />
|
||||||
<Compile Include="Assets\Scripts\AutoTargetSystem.cs" />
|
<Compile Include="Assets\Scripts\AutoTargetSystem.cs" />
|
||||||
<Compile Include="Assets\Scripts\CreepDataComponent.cs" />
|
<Compile Include="Assets\Scripts\CreepDataComponent.cs" />
|
||||||
<Compile Include="Assets\Scripts\BuildingSlotButton.cs" />
|
<Compile Include="Assets\Scripts\BuildingSlotButton.cs" />
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ MonoBehaviour:
|
|||||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.CreepData
|
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.CreepData
|
||||||
id: 1
|
id: 1
|
||||||
memo: "\uAE30\uBCF81"
|
memo: "\uAE30\uBCF81"
|
||||||
moveSpeed: 5
|
moveSpeed: 4
|
||||||
maxHp: 75
|
maxHp: 75
|
||||||
sight: 6
|
sight: 6
|
||||||
atkRange: 1
|
atkRange: 1
|
||||||
@@ -22,5 +22,5 @@ MonoBehaviour:
|
|||||||
atkIntervalSec: 2
|
atkIntervalSec: 2
|
||||||
cost: 2
|
cost: 2
|
||||||
weight: 1
|
weight: 1
|
||||||
modelPath: Assets/Models/PlantWarrior.fbx
|
modelPath: Assets/Models/PlantWarrior_With_Spear.fbx
|
||||||
animationControllerPath: Assets/Animations/MonsterAnimationController.controller
|
animationControllerPath: Assets/Animations/MonsterAnimationController.controller
|
||||||
|
|||||||
@@ -14,8 +14,8 @@ MonoBehaviour:
|
|||||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.CreepData
|
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.CreepData
|
||||||
id: 2
|
id: 2
|
||||||
memo: "\uAE30\uBCF82"
|
memo: "\uAE30\uBCF82"
|
||||||
moveSpeed: 4.5
|
moveSpeed: 3.5
|
||||||
maxHp: 100
|
maxHp: 50
|
||||||
sight: 6
|
sight: 6
|
||||||
atkRange: 4
|
atkRange: 4
|
||||||
atkDamage: 15
|
atkDamage: 15
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ MonoBehaviour:
|
|||||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.MonsterData
|
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.MonsterData
|
||||||
id: 101
|
id: 101
|
||||||
memo: "Grunt(\uAE30\uBCF8)"
|
memo: "Grunt(\uAE30\uBCF8)"
|
||||||
moveSpeed: 6.7
|
moveSpeed: 4.5
|
||||||
maxHp: 75
|
maxHp: 75
|
||||||
sight: 6
|
sight: 6
|
||||||
atkRange: 1
|
atkRange: 1
|
||||||
@@ -22,7 +22,7 @@ MonoBehaviour:
|
|||||||
atkIntervalSec: 1.2
|
atkIntervalSec: 1.2
|
||||||
cost: 3
|
cost: 3
|
||||||
weight: 1
|
weight: 1
|
||||||
modelPath: Assets/Models/Skeleton_Minion.fbx
|
modelPath: Assets/Models/Skeleton_Minion_With_Sword.fbx
|
||||||
animationControllerPath: Assets/Animations/MonsterAnimationController.controller
|
animationControllerPath: Assets/Animations/MonsterAnimationController.controller
|
||||||
waveMin: 1
|
waveMin: 1
|
||||||
waveMax: 10
|
waveMax: 10
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ MonoBehaviour:
|
|||||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.MonsterData
|
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.MonsterData
|
||||||
id: 102
|
id: 102
|
||||||
memo: "Tank(\uB290\uB9BC/\uB2E8\uB2E8)"
|
memo: "Tank(\uB290\uB9BC/\uB2E8\uB2E8)"
|
||||||
moveSpeed: 3.3
|
moveSpeed: 2.5
|
||||||
maxHp: 125
|
maxHp: 125
|
||||||
sight: 6
|
sight: 6
|
||||||
atkRange: 1
|
atkRange: 1
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ MonoBehaviour:
|
|||||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.MonsterData
|
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.MonsterData
|
||||||
id: 103
|
id: 103
|
||||||
memo: "Ranged(\uC6D0\uAC70\uB9AC/\uC57D\uD568)"
|
memo: "Ranged(\uC6D0\uAC70\uB9AC/\uC57D\uD568)"
|
||||||
moveSpeed: 5.3
|
moveSpeed: 3.5
|
||||||
maxHp: 65
|
maxHp: 65
|
||||||
sight: 6
|
sight: 6
|
||||||
atkRange: 5
|
atkRange: 5
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ MonoBehaviour:
|
|||||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.MonsterData
|
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.MonsterData
|
||||||
id: 104
|
id: 104
|
||||||
memo: "Fast(\uBE60\uB984/\uC57D\uD568)"
|
memo: "Fast(\uBE60\uB984/\uC57D\uD568)"
|
||||||
moveSpeed: 8.6
|
moveSpeed: 6
|
||||||
maxHp: 45
|
maxHp: 45
|
||||||
sight: 6
|
sight: 6
|
||||||
atkRange: 1
|
atkRange: 1
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ MonoBehaviour:
|
|||||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.MonsterData
|
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.MonsterData
|
||||||
id: 105
|
id: 105
|
||||||
memo: "Elite(\uC18C\uC218 \uC815\uC608)"
|
memo: "Elite(\uC18C\uC218 \uC815\uC608)"
|
||||||
moveSpeed: 6.6
|
moveSpeed: 4.5
|
||||||
maxHp: 100
|
maxHp: 100
|
||||||
sight: 6
|
sight: 6
|
||||||
atkRange: 1
|
atkRange: 1
|
||||||
|
|||||||
@@ -18,8 +18,8 @@ MonoBehaviour:
|
|||||||
level: 1
|
level: 1
|
||||||
upgradeTo: 2
|
upgradeTo: 2
|
||||||
towerType: attack
|
towerType: attack
|
||||||
mana: 100
|
mana: 150
|
||||||
manpower: 10
|
manpower: 50
|
||||||
sizeX: 4
|
sizeX: 4
|
||||||
sizeY: 10
|
sizeY: 10
|
||||||
sizeZ: 4
|
sizeZ: 4
|
||||||
|
|||||||
@@ -19,11 +19,11 @@ MonoBehaviour:
|
|||||||
upgradeTo: 0
|
upgradeTo: 0
|
||||||
towerType: defense
|
towerType: defense
|
||||||
mana: 150
|
mana: 150
|
||||||
manpower: 20
|
manpower: 50
|
||||||
sizeX: 8
|
sizeX: 8
|
||||||
sizeY: 4
|
sizeY: 4
|
||||||
sizeZ: 3
|
sizeZ: 3
|
||||||
maxHp: 30
|
maxHp: 110
|
||||||
sight: 1
|
sight: 1
|
||||||
atkRange: 0
|
atkRange: 0
|
||||||
atkDamage: 0
|
atkDamage: 0
|
||||||
|
|||||||
@@ -18,8 +18,8 @@ MonoBehaviour:
|
|||||||
level: 2
|
level: 2
|
||||||
upgradeTo: 3
|
upgradeTo: 3
|
||||||
towerType: attack
|
towerType: attack
|
||||||
mana: 200
|
mana: 300
|
||||||
manpower: 20
|
manpower: 60
|
||||||
sizeX: 4
|
sizeX: 4
|
||||||
sizeY: 10
|
sizeY: 10
|
||||||
sizeZ: 4
|
sizeZ: 4
|
||||||
|
|||||||
@@ -18,8 +18,8 @@ MonoBehaviour:
|
|||||||
level: 3
|
level: 3
|
||||||
upgradeTo: 4
|
upgradeTo: 4
|
||||||
towerType: attack
|
towerType: attack
|
||||||
mana: 300
|
mana: 450
|
||||||
manpower: 30
|
manpower: 70
|
||||||
sizeX: 4
|
sizeX: 4
|
||||||
sizeY: 10
|
sizeY: 10
|
||||||
sizeZ: 4
|
sizeZ: 4
|
||||||
|
|||||||
@@ -18,8 +18,8 @@ MonoBehaviour:
|
|||||||
level: 4
|
level: 4
|
||||||
upgradeTo: 5
|
upgradeTo: 5
|
||||||
towerType: attack
|
towerType: attack
|
||||||
mana: 400
|
mana: 600
|
||||||
manpower: 40
|
manpower: 80
|
||||||
sizeX: 4
|
sizeX: 4
|
||||||
sizeY: 10
|
sizeY: 10
|
||||||
sizeZ: 4
|
sizeZ: 4
|
||||||
|
|||||||
@@ -18,8 +18,8 @@ MonoBehaviour:
|
|||||||
level: 5
|
level: 5
|
||||||
upgradeTo: 0
|
upgradeTo: 0
|
||||||
towerType: attack
|
towerType: attack
|
||||||
mana: 600
|
mana: 750
|
||||||
manpower: 50
|
manpower: 100
|
||||||
sizeX: 4
|
sizeX: 4
|
||||||
sizeY: 10
|
sizeY: 10
|
||||||
sizeZ: 4
|
sizeZ: 4
|
||||||
|
|||||||
@@ -19,11 +19,11 @@ MonoBehaviour:
|
|||||||
upgradeTo: 8
|
upgradeTo: 8
|
||||||
towerType: defense
|
towerType: defense
|
||||||
mana: 30
|
mana: 30
|
||||||
manpower: 10
|
manpower: 20
|
||||||
sizeX: 8
|
sizeX: 8
|
||||||
sizeY: 4
|
sizeY: 4
|
||||||
sizeZ: 3
|
sizeZ: 3
|
||||||
maxHp: 30
|
maxHp: 50
|
||||||
sight: 1
|
sight: 1
|
||||||
atkRange: 0
|
atkRange: 0
|
||||||
atkDamage: 0
|
atkDamage: 0
|
||||||
|
|||||||
@@ -19,11 +19,11 @@ MonoBehaviour:
|
|||||||
upgradeTo: 9
|
upgradeTo: 9
|
||||||
towerType: defense
|
towerType: defense
|
||||||
mana: 50
|
mana: 50
|
||||||
manpower: 20
|
manpower: 30
|
||||||
sizeX: 8
|
sizeX: 8
|
||||||
sizeY: 4
|
sizeY: 4
|
||||||
sizeZ: 3
|
sizeZ: 3
|
||||||
maxHp: 30
|
maxHp: 60
|
||||||
sight: 1
|
sight: 1
|
||||||
atkRange: 0
|
atkRange: 0
|
||||||
atkDamage: 0
|
atkDamage: 0
|
||||||
|
|||||||
@@ -19,11 +19,11 @@ MonoBehaviour:
|
|||||||
upgradeTo: 10
|
upgradeTo: 10
|
||||||
towerType: defense
|
towerType: defense
|
||||||
mana: 100
|
mana: 100
|
||||||
manpower: 20
|
manpower: 40
|
||||||
sizeX: 8
|
sizeX: 8
|
||||||
sizeY: 4
|
sizeY: 4
|
||||||
sizeZ: 3
|
sizeZ: 3
|
||||||
maxHp: 30
|
maxHp: 80
|
||||||
sight: 1
|
sight: 1
|
||||||
atkRange: 0
|
atkRange: 0
|
||||||
atkDamage: 0
|
atkDamage: 0
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ namespace Northbound.Data
|
|||||||
public int length => sizeZ; // Z축 (깊이)
|
public int length => sizeZ; // Z축 (깊이)
|
||||||
public float height => sizeY; // Y축 (높이)
|
public float height => sizeY; // Y축 (높이)
|
||||||
public int maxHealth => maxHp;
|
public int maxHealth => maxHp;
|
||||||
public float visionRange => atkRange;
|
public float visionRange => sight;
|
||||||
public float requiredWorkAmount => manpower;
|
public float requiredWorkAmount => manpower;
|
||||||
|
|
||||||
public Vector3 GetSize(int rotation)
|
public Vector3 GetSize(int rotation)
|
||||||
|
|||||||
@@ -73,9 +73,9 @@ Material:
|
|||||||
- _OutlineWidth: 0
|
- _OutlineWidth: 0
|
||||||
- _PerspectiveFilter: 0.875
|
- _PerspectiveFilter: 0.875
|
||||||
- _Reflectivity: 10
|
- _Reflectivity: 10
|
||||||
- _ScaleRatioA: 0.9814815
|
- _ScaleRatioA: 0.75
|
||||||
- _ScaleRatioB: 0.7974537
|
- _ScaleRatioB: 0.609375
|
||||||
- _ScaleRatioC: 0.7974537
|
- _ScaleRatioC: 0.609375
|
||||||
- _ScaleX: 1
|
- _ScaleX: 1
|
||||||
- _ScaleY: 1
|
- _ScaleY: 1
|
||||||
- _ShaderFlags: 0
|
- _ShaderFlags: 0
|
||||||
|
|||||||
129
Assets/Models/PlantWarrior_With_Spear.prefab
Normal file
129
Assets/Models/PlantWarrior_With_Spear.prefab
Normal file
@@ -0,0 +1,129 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1001 &2678598980648547258
|
||||||
|
PrefabInstance:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Modification:
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TransformParent: {fileID: 0}
|
||||||
|
m_Modifications:
|
||||||
|
- target: {fileID: -8679921383154817045, guid: 1b47a488ece83f249abea22b1b1877fb, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.x
|
||||||
|
value: -14.918472
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: -8679921383154817045, guid: 1b47a488ece83f249abea22b1b1877fb, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.y
|
||||||
|
value: 1.0000176
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: -8679921383154817045, guid: 1b47a488ece83f249abea22b1b1877fb, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.z
|
||||||
|
value: 6.0022106
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: -8679921383154817045, guid: 1b47a488ece83f249abea22b1b1877fb, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.w
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: -8679921383154817045, guid: 1b47a488ece83f249abea22b1b1877fb, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: -8679921383154817045, guid: 1b47a488ece83f249abea22b1b1877fb, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: -8679921383154817045, guid: 1b47a488ece83f249abea22b1b1877fb, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: -8679921383154817045, guid: 1b47a488ece83f249abea22b1b1877fb, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: -8679921383154817045, guid: 1b47a488ece83f249abea22b1b1877fb, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: -8679921383154817045, guid: 1b47a488ece83f249abea22b1b1877fb, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 919132149155446097, guid: 1b47a488ece83f249abea22b1b1877fb, type: 3}
|
||||||
|
propertyPath: m_Name
|
||||||
|
value: PlantWarrior_With_Spear
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
m_RemovedComponents: []
|
||||||
|
m_RemovedGameObjects: []
|
||||||
|
m_AddedGameObjects:
|
||||||
|
- targetCorrespondingSourceObject: {fileID: -5515783359193845756, guid: 1b47a488ece83f249abea22b1b1877fb, type: 3}
|
||||||
|
insertIndex: -1
|
||||||
|
addedObject: {fileID: 7069067296122378839}
|
||||||
|
m_AddedComponents: []
|
||||||
|
m_SourcePrefab: {fileID: 100100000, guid: 1b47a488ece83f249abea22b1b1877fb, type: 3}
|
||||||
|
--- !u!4 &1610120253448831934 stripped
|
||||||
|
Transform:
|
||||||
|
m_CorrespondingSourceObject: {fileID: -5515783359193845756, guid: 1b47a488ece83f249abea22b1b1877fb, type: 3}
|
||||||
|
m_PrefabInstance: {fileID: 2678598980648547258}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
--- !u!1001 &7318602548037418428
|
||||||
|
PrefabInstance:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Modification:
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TransformParent: {fileID: 1610120253448831934}
|
||||||
|
m_Modifications:
|
||||||
|
- target: {fileID: -8679921383154817045, guid: bec7726862777a042919c40fd38fce81, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: -8679921383154817045, guid: bec7726862777a042919c40fd38fce81, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.y
|
||||||
|
value: 0.15
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: -8679921383154817045, guid: bec7726862777a042919c40fd38fce81, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: -8679921383154817045, guid: bec7726862777a042919c40fd38fce81, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.w
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: -8679921383154817045, guid: bec7726862777a042919c40fd38fce81, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.x
|
||||||
|
value: 0.00000008146034
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: -8679921383154817045, guid: bec7726862777a042919c40fd38fce81, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: -8679921383154817045, guid: bec7726862777a042919c40fd38fce81, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.z
|
||||||
|
value: -0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: -8679921383154817045, guid: bec7726862777a042919c40fd38fce81, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: -8679921383154817045, guid: bec7726862777a042919c40fd38fce81, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: -8679921383154817045, guid: bec7726862777a042919c40fd38fce81, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 919132149155446097, guid: bec7726862777a042919c40fd38fce81, type: 3}
|
||||||
|
propertyPath: m_Name
|
||||||
|
value: PlantWarrior_Spear
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
m_RemovedComponents: []
|
||||||
|
m_RemovedGameObjects: []
|
||||||
|
m_AddedGameObjects: []
|
||||||
|
m_AddedComponents: []
|
||||||
|
m_SourcePrefab: {fileID: 100100000, guid: bec7726862777a042919c40fd38fce81, type: 3}
|
||||||
|
--- !u!4 &7069067296122378839 stripped
|
||||||
|
Transform:
|
||||||
|
m_CorrespondingSourceObject: {fileID: -8679921383154817045, guid: bec7726862777a042919c40fd38fce81, type: 3}
|
||||||
|
m_PrefabInstance: {fileID: 7318602548037418428}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
7
Assets/Models/PlantWarrior_With_Spear.prefab.meta
Normal file
7
Assets/Models/PlantWarrior_With_Spear.prefab.meta
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 0cce1b86be09a2c478b2f604fcc5c7cc
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
129
Assets/Models/Skeleton_Minion_With_Sword.prefab
Normal file
129
Assets/Models/Skeleton_Minion_With_Sword.prefab
Normal file
@@ -0,0 +1,129 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1001 &274662760238388128
|
||||||
|
PrefabInstance:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Modification:
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TransformParent: {fileID: 8440547662176677020}
|
||||||
|
m_Modifications:
|
||||||
|
- target: {fileID: -8679921383154817045, guid: c85b70d5b9e5dda4d91f7d8ad5b574db, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: -8679921383154817045, guid: c85b70d5b9e5dda4d91f7d8ad5b574db, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: -8679921383154817045, guid: c85b70d5b9e5dda4d91f7d8ad5b574db, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: -8679921383154817045, guid: c85b70d5b9e5dda4d91f7d8ad5b574db, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.w
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: -8679921383154817045, guid: c85b70d5b9e5dda4d91f7d8ad5b574db, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: -8679921383154817045, guid: c85b70d5b9e5dda4d91f7d8ad5b574db, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: -8679921383154817045, guid: c85b70d5b9e5dda4d91f7d8ad5b574db, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.z
|
||||||
|
value: -0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: -8679921383154817045, guid: c85b70d5b9e5dda4d91f7d8ad5b574db, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: -8679921383154817045, guid: c85b70d5b9e5dda4d91f7d8ad5b574db, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: -8679921383154817045, guid: c85b70d5b9e5dda4d91f7d8ad5b574db, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 919132149155446097, guid: c85b70d5b9e5dda4d91f7d8ad5b574db, type: 3}
|
||||||
|
propertyPath: m_Name
|
||||||
|
value: sword_1handed
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
m_RemovedComponents: []
|
||||||
|
m_RemovedGameObjects: []
|
||||||
|
m_AddedGameObjects: []
|
||||||
|
m_AddedComponents: []
|
||||||
|
m_SourcePrefab: {fileID: 100100000, guid: c85b70d5b9e5dda4d91f7d8ad5b574db, type: 3}
|
||||||
|
--- !u!4 &307780991042516043 stripped
|
||||||
|
Transform:
|
||||||
|
m_CorrespondingSourceObject: {fileID: -8679921383154817045, guid: c85b70d5b9e5dda4d91f7d8ad5b574db, type: 3}
|
||||||
|
m_PrefabInstance: {fileID: 274662760238388128}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
--- !u!1001 &5068477173941542040
|
||||||
|
PrefabInstance:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Modification:
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TransformParent: {fileID: 0}
|
||||||
|
m_Modifications:
|
||||||
|
- target: {fileID: -8679921383154817045, guid: 134023580cb126541be31f65cf1db789, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.x
|
||||||
|
value: -17.62028
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: -8679921383154817045, guid: 134023580cb126541be31f65cf1db789, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.y
|
||||||
|
value: 1.0000178
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: -8679921383154817045, guid: 134023580cb126541be31f65cf1db789, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.z
|
||||||
|
value: 7.511076
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: -8679921383154817045, guid: 134023580cb126541be31f65cf1db789, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.w
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: -8679921383154817045, guid: 134023580cb126541be31f65cf1db789, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: -8679921383154817045, guid: 134023580cb126541be31f65cf1db789, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: -8679921383154817045, guid: 134023580cb126541be31f65cf1db789, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: -8679921383154817045, guid: 134023580cb126541be31f65cf1db789, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: -8679921383154817045, guid: 134023580cb126541be31f65cf1db789, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: -8679921383154817045, guid: 134023580cb126541be31f65cf1db789, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 919132149155446097, guid: 134023580cb126541be31f65cf1db789, type: 3}
|
||||||
|
propertyPath: m_Name
|
||||||
|
value: Skeleton_Minion_With_Sword
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
m_RemovedComponents: []
|
||||||
|
m_RemovedGameObjects: []
|
||||||
|
m_AddedGameObjects:
|
||||||
|
- targetCorrespondingSourceObject: {fileID: -5515783359193845756, guid: 134023580cb126541be31f65cf1db789, type: 3}
|
||||||
|
insertIndex: -1
|
||||||
|
addedObject: {fileID: 307780991042516043}
|
||||||
|
m_AddedComponents: []
|
||||||
|
m_SourcePrefab: {fileID: 100100000, guid: 134023580cb126541be31f65cf1db789, type: 3}
|
||||||
|
--- !u!4 &8440547662176677020 stripped
|
||||||
|
Transform:
|
||||||
|
m_CorrespondingSourceObject: {fileID: -5515783359193845756, guid: 134023580cb126541be31f65cf1db789, type: 3}
|
||||||
|
m_PrefabInstance: {fileID: 5068477173941542040}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
7
Assets/Models/Skeleton_Minion_With_Sword.prefab.meta
Normal file
7
Assets/Models/Skeleton_Minion_With_Sword.prefab.meta
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 9ce2fed223ab07f4cad4f5296bcfafa6
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
47
Assets/Prefabs/Core.asset
Normal file
47
Assets/Prefabs/Core.asset
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
%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: 8c40fef5ebc37b743a3f225c1ca57c32, type: 3}
|
||||||
|
m_Name: Core
|
||||||
|
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.TowerData
|
||||||
|
id: 0
|
||||||
|
memo:
|
||||||
|
buildingName:
|
||||||
|
level: 0
|
||||||
|
upgradeTo: 0
|
||||||
|
towerType:
|
||||||
|
mana: 0
|
||||||
|
manpower: 0
|
||||||
|
sizeX: 0
|
||||||
|
sizeY: 0
|
||||||
|
sizeZ: 0
|
||||||
|
maxHp: 0
|
||||||
|
sight: 100
|
||||||
|
atkRange: 0
|
||||||
|
atkDamage: 0
|
||||||
|
atkIntervalSec: 0
|
||||||
|
modelPath:
|
||||||
|
prefab: {fileID: 0}
|
||||||
|
icon: {fileID: 0}
|
||||||
|
placementOffset: {x: 0, y: 0, z: 0}
|
||||||
|
allowRotation: 1
|
||||||
|
isIndestructible: 0
|
||||||
|
autoRegenerate: 0
|
||||||
|
regenPerSecond: 1
|
||||||
|
providesVision: 1
|
||||||
|
constructionEquipment:
|
||||||
|
socketName: RightHand
|
||||||
|
equipmentPrefab: {fileID: 0}
|
||||||
|
attachOnStart: 1
|
||||||
|
detachOnEnd: 1
|
||||||
|
keepEquipped: 0
|
||||||
|
attachDelay: 0
|
||||||
|
detachDelay: 0
|
||||||
8
Assets/Prefabs/Core.asset.meta
Normal file
8
Assets/Prefabs/Core.asset.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8e9cb7f0c2209b543b171709534789aa
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -49,7 +49,7 @@ MonoBehaviour:
|
|||||||
m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3}
|
m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier: Unity.Netcode.Runtime::Unity.Netcode.NetworkObject
|
m_EditorClassIdentifier: Unity.Netcode.Runtime::Unity.Netcode.NetworkObject
|
||||||
GlobalObjectIdHash: 3998537868
|
GlobalObjectIdHash: 615747208
|
||||||
InScenePlacedSourceGlobalObjectIdHash: 615747208
|
InScenePlacedSourceGlobalObjectIdHash: 615747208
|
||||||
DeferredDespawnTick: 0
|
DeferredDespawnTick: 0
|
||||||
Ownership: 0
|
Ownership: 0
|
||||||
@@ -106,7 +106,7 @@ MonoBehaviour:
|
|||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Building
|
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Building
|
||||||
ShowTopMostFoldoutHeaderGroup: 1
|
ShowTopMostFoldoutHeaderGroup: 1
|
||||||
buildingData: {fileID: 0}
|
buildingData: {fileID: 11400000, guid: 8e9cb7f0c2209b543b171709534789aa, type: 2}
|
||||||
gridPosition: {x: 0, y: 0, z: 0}
|
gridPosition: {x: 0, y: 0, z: 0}
|
||||||
rotation: 0
|
rotation: 0
|
||||||
initialTeam: 1
|
initialTeam: 1
|
||||||
@@ -152,10 +152,12 @@ MonoBehaviour:
|
|||||||
m_Script: {fileID: 11500000, guid: 760137a2fd0da7f458ac4b0ee7f485d6, type: 3}
|
m_Script: {fileID: 11500000, guid: 760137a2fd0da7f458ac4b0ee7f485d6, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.FogOfWarVisibility
|
m_EditorClassIdentifier: Assembly-CSharp::Northbound.FogOfWarVisibility
|
||||||
|
alwaysVisible: 1
|
||||||
showInExploredAreas: 1
|
showInExploredAreas: 1
|
||||||
updateInterval: 0.2
|
updateInterval: 0.2
|
||||||
renderers: []
|
renderers: []
|
||||||
enableDistantVisibility: 1
|
enableDistantVisibility: 1
|
||||||
|
baseVisibilityRange: 50
|
||||||
heightVisibilityMultiplier: 2
|
heightVisibilityMultiplier: 2
|
||||||
minHeightForDistantVisibility: 3
|
minHeightForDistantVisibility: 3
|
||||||
useExploredMaterial: 0
|
useExploredMaterial: 0
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1641,8 +1641,10 @@ MonoBehaviour:
|
|||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.EnemyUnit
|
m_EditorClassIdentifier: Assembly-CSharp::Northbound.EnemyUnit
|
||||||
ShowTopMostFoldoutHeaderGroup: 1
|
ShowTopMostFoldoutHeaderGroup: 1
|
||||||
|
enableFogVisibility: 1
|
||||||
|
visibilityCheckInterval: 0.1
|
||||||
enemyTeam: 2
|
enemyTeam: 2
|
||||||
maxHealth: 100
|
maxHealth: 50
|
||||||
damageEffectPrefab: {fileID: 4021103657954561961, guid: 5c755f9bc5253ea418e919994537dcc7, type: 3}
|
damageEffectPrefab: {fileID: 4021103657954561961, guid: 5c755f9bc5253ea418e919994537dcc7, type: 3}
|
||||||
destroyEffectPrefab: {fileID: 141433446842962269, guid: 9fe8f8b3288e45a44af36ff8aa04486e, type: 3}
|
destroyEffectPrefab: {fileID: 141433446842962269, guid: 9fe8f8b3288e45a44af36ff8aa04486e, type: 3}
|
||||||
showHealthBar: 1
|
showHealthBar: 1
|
||||||
@@ -1657,7 +1659,7 @@ NavMeshAgent:
|
|||||||
m_Enabled: 1
|
m_Enabled: 1
|
||||||
m_AgentTypeID: 0
|
m_AgentTypeID: 0
|
||||||
m_Radius: 0.5
|
m_Radius: 0.5
|
||||||
m_Speed: 4.5
|
m_Speed: 3.5
|
||||||
m_Acceleration: 8
|
m_Acceleration: 8
|
||||||
avoidancePriority: 50
|
avoidancePriority: 50
|
||||||
m_AngularSpeed: 120
|
m_AngularSpeed: 120
|
||||||
@@ -1696,9 +1698,16 @@ MonoBehaviour:
|
|||||||
attackRange: 4
|
attackRange: 4
|
||||||
attackInterval: 4
|
attackInterval: 4
|
||||||
attackDamage: 15
|
attackDamage: 15
|
||||||
moveSpeed: 4.5
|
moveSpeed: 3.5
|
||||||
chaseSpeedMultiplier: 1
|
chaseSpeedMultiplier: 1
|
||||||
showDebugInfo: 1
|
showDebugInfo: 1
|
||||||
|
creepCamp: {fileID: 0}
|
||||||
|
enableAggroSystem: 1
|
||||||
|
damageAggroMultiplier: 2
|
||||||
|
aggroDecayRate: 5
|
||||||
|
aggroSwitchThreshold: 20
|
||||||
|
targetReevaluateInterval: 1
|
||||||
|
distanceSwitchThreshold: 5
|
||||||
--- !u!95 &367892292455292432
|
--- !u!95 &367892292455292432
|
||||||
Animator:
|
Animator:
|
||||||
serializedVersion: 7
|
serializedVersion: 7
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1737,6 +1737,8 @@ MonoBehaviour:
|
|||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.EnemyUnit
|
m_EditorClassIdentifier: Assembly-CSharp::Northbound.EnemyUnit
|
||||||
ShowTopMostFoldoutHeaderGroup: 1
|
ShowTopMostFoldoutHeaderGroup: 1
|
||||||
|
enableFogVisibility: 1
|
||||||
|
visibilityCheckInterval: 0.1
|
||||||
enemyTeam: 3
|
enemyTeam: 3
|
||||||
maxHealth: 125
|
maxHealth: 125
|
||||||
damageEffectPrefab: {fileID: 4021103657954561961, guid: 5c755f9bc5253ea418e919994537dcc7, type: 3}
|
damageEffectPrefab: {fileID: 4021103657954561961, guid: 5c755f9bc5253ea418e919994537dcc7, type: 3}
|
||||||
@@ -1753,7 +1755,7 @@ NavMeshAgent:
|
|||||||
m_Enabled: 1
|
m_Enabled: 1
|
||||||
m_AgentTypeID: 0
|
m_AgentTypeID: 0
|
||||||
m_Radius: 0.5
|
m_Radius: 0.5
|
||||||
m_Speed: 3.3
|
m_Speed: 2.5
|
||||||
m_Acceleration: 8
|
m_Acceleration: 8
|
||||||
avoidancePriority: 50
|
avoidancePriority: 50
|
||||||
m_AngularSpeed: 120
|
m_AngularSpeed: 120
|
||||||
@@ -1792,9 +1794,16 @@ MonoBehaviour:
|
|||||||
attackRange: 1
|
attackRange: 1
|
||||||
attackInterval: 1.5
|
attackInterval: 1.5
|
||||||
attackDamage: 4
|
attackDamage: 4
|
||||||
moveSpeed: 3.3
|
moveSpeed: 2.5
|
||||||
chaseSpeedMultiplier: 1
|
chaseSpeedMultiplier: 1
|
||||||
showDebugInfo: 1
|
showDebugInfo: 1
|
||||||
|
creepCamp: {fileID: 0}
|
||||||
|
enableAggroSystem: 1
|
||||||
|
damageAggroMultiplier: 2
|
||||||
|
aggroDecayRate: 5
|
||||||
|
aggroSwitchThreshold: 20
|
||||||
|
targetReevaluateInterval: 1
|
||||||
|
distanceSwitchThreshold: 5
|
||||||
--- !u!114 &6540479212111277442
|
--- !u!114 &6540479212111277442
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|||||||
@@ -659,6 +659,8 @@ MonoBehaviour:
|
|||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.EnemyUnit
|
m_EditorClassIdentifier: Assembly-CSharp::Northbound.EnemyUnit
|
||||||
ShowTopMostFoldoutHeaderGroup: 1
|
ShowTopMostFoldoutHeaderGroup: 1
|
||||||
|
enableFogVisibility: 1
|
||||||
|
visibilityCheckInterval: 0.1
|
||||||
enemyTeam: 3
|
enemyTeam: 3
|
||||||
maxHealth: 65
|
maxHealth: 65
|
||||||
damageEffectPrefab: {fileID: 4021103657954561961, guid: 5c755f9bc5253ea418e919994537dcc7, type: 3}
|
damageEffectPrefab: {fileID: 4021103657954561961, guid: 5c755f9bc5253ea418e919994537dcc7, type: 3}
|
||||||
@@ -675,7 +677,7 @@ NavMeshAgent:
|
|||||||
m_Enabled: 1
|
m_Enabled: 1
|
||||||
m_AgentTypeID: 0
|
m_AgentTypeID: 0
|
||||||
m_Radius: 0.5
|
m_Radius: 0.5
|
||||||
m_Speed: 5.3
|
m_Speed: 3.5
|
||||||
m_Acceleration: 8
|
m_Acceleration: 8
|
||||||
avoidancePriority: 50
|
avoidancePriority: 50
|
||||||
m_AngularSpeed: 120
|
m_AngularSpeed: 120
|
||||||
@@ -714,9 +716,16 @@ MonoBehaviour:
|
|||||||
attackRange: 5
|
attackRange: 5
|
||||||
attackInterval: 1.4
|
attackInterval: 1.4
|
||||||
attackDamage: 2
|
attackDamage: 2
|
||||||
moveSpeed: 5.3
|
moveSpeed: 3.5
|
||||||
chaseSpeedMultiplier: 1
|
chaseSpeedMultiplier: 1
|
||||||
showDebugInfo: 1
|
showDebugInfo: 1
|
||||||
|
creepCamp: {fileID: 0}
|
||||||
|
enableAggroSystem: 1
|
||||||
|
damageAggroMultiplier: 2
|
||||||
|
aggroDecayRate: 5
|
||||||
|
aggroSwitchThreshold: 20
|
||||||
|
targetReevaluateInterval: 1
|
||||||
|
distanceSwitchThreshold: 5
|
||||||
--- !u!114 &8817410469440881478
|
--- !u!114 &8817410469440881478
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|||||||
@@ -1092,6 +1092,8 @@ MonoBehaviour:
|
|||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.EnemyUnit
|
m_EditorClassIdentifier: Assembly-CSharp::Northbound.EnemyUnit
|
||||||
ShowTopMostFoldoutHeaderGroup: 1
|
ShowTopMostFoldoutHeaderGroup: 1
|
||||||
|
enableFogVisibility: 1
|
||||||
|
visibilityCheckInterval: 0.1
|
||||||
enemyTeam: 3
|
enemyTeam: 3
|
||||||
maxHealth: 45
|
maxHealth: 45
|
||||||
damageEffectPrefab: {fileID: 4021103657954561961, guid: 5c755f9bc5253ea418e919994537dcc7, type: 3}
|
damageEffectPrefab: {fileID: 4021103657954561961, guid: 5c755f9bc5253ea418e919994537dcc7, type: 3}
|
||||||
@@ -1108,7 +1110,7 @@ NavMeshAgent:
|
|||||||
m_Enabled: 1
|
m_Enabled: 1
|
||||||
m_AgentTypeID: 0
|
m_AgentTypeID: 0
|
||||||
m_Radius: 0.5
|
m_Radius: 0.5
|
||||||
m_Speed: 8.6
|
m_Speed: 6
|
||||||
m_Acceleration: 8
|
m_Acceleration: 8
|
||||||
avoidancePriority: 50
|
avoidancePriority: 50
|
||||||
m_AngularSpeed: 120
|
m_AngularSpeed: 120
|
||||||
@@ -1147,9 +1149,16 @@ MonoBehaviour:
|
|||||||
attackRange: 1
|
attackRange: 1
|
||||||
attackInterval: 1
|
attackInterval: 1
|
||||||
attackDamage: 2
|
attackDamage: 2
|
||||||
moveSpeed: 8.6
|
moveSpeed: 6
|
||||||
chaseSpeedMultiplier: 1
|
chaseSpeedMultiplier: 1
|
||||||
showDebugInfo: 1
|
showDebugInfo: 1
|
||||||
|
creepCamp: {fileID: 0}
|
||||||
|
enableAggroSystem: 1
|
||||||
|
damageAggroMultiplier: 2
|
||||||
|
aggroDecayRate: 5
|
||||||
|
aggroSwitchThreshold: 20
|
||||||
|
targetReevaluateInterval: 1
|
||||||
|
distanceSwitchThreshold: 5
|
||||||
--- !u!114 &177302896207380593
|
--- !u!114 &177302896207380593
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|||||||
@@ -1337,6 +1337,8 @@ MonoBehaviour:
|
|||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.EnemyUnit
|
m_EditorClassIdentifier: Assembly-CSharp::Northbound.EnemyUnit
|
||||||
ShowTopMostFoldoutHeaderGroup: 1
|
ShowTopMostFoldoutHeaderGroup: 1
|
||||||
|
enableFogVisibility: 1
|
||||||
|
visibilityCheckInterval: 0.1
|
||||||
enemyTeam: 3
|
enemyTeam: 3
|
||||||
maxHealth: 100
|
maxHealth: 100
|
||||||
damageEffectPrefab: {fileID: 4021103657954561961, guid: 5c755f9bc5253ea418e919994537dcc7, type: 3}
|
damageEffectPrefab: {fileID: 4021103657954561961, guid: 5c755f9bc5253ea418e919994537dcc7, type: 3}
|
||||||
@@ -1353,7 +1355,7 @@ NavMeshAgent:
|
|||||||
m_Enabled: 1
|
m_Enabled: 1
|
||||||
m_AgentTypeID: 0
|
m_AgentTypeID: 0
|
||||||
m_Radius: 0.5
|
m_Radius: 0.5
|
||||||
m_Speed: 6.6
|
m_Speed: 4.5
|
||||||
m_Acceleration: 8
|
m_Acceleration: 8
|
||||||
avoidancePriority: 50
|
avoidancePriority: 50
|
||||||
m_AngularSpeed: 120
|
m_AngularSpeed: 120
|
||||||
@@ -1392,9 +1394,16 @@ MonoBehaviour:
|
|||||||
attackRange: 1
|
attackRange: 1
|
||||||
attackInterval: 1.3
|
attackInterval: 1.3
|
||||||
attackDamage: 7
|
attackDamage: 7
|
||||||
moveSpeed: 6.6
|
moveSpeed: 4.5
|
||||||
chaseSpeedMultiplier: 1
|
chaseSpeedMultiplier: 1
|
||||||
showDebugInfo: 1
|
showDebugInfo: 1
|
||||||
|
creepCamp: {fileID: 0}
|
||||||
|
enableAggroSystem: 1
|
||||||
|
damageAggroMultiplier: 2
|
||||||
|
aggroDecayRate: 5
|
||||||
|
aggroSwitchThreshold: 20
|
||||||
|
targetReevaluateInterval: 1
|
||||||
|
distanceSwitchThreshold: 5
|
||||||
--- !u!114 &324484408599232274
|
--- !u!114 &324484408599232274
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|||||||
@@ -93,7 +93,6 @@ MonoBehaviour:
|
|||||||
deathEffectPrefab: {fileID: 5642766282230003982, guid: b5c8ca7ed10b61e499cce8ec3b6e2e4c, type: 3}
|
deathEffectPrefab: {fileID: 5642766282230003982, guid: b5c8ca7ed10b61e499cce8ec3b6e2e4c, type: 3}
|
||||||
resourcePickupPrefab: {fileID: 1627676033990080135, guid: 8c45964a69bf8fa4ba461ed217bc052f, type: 3}
|
resourcePickupPrefab: {fileID: 1627676033990080135, guid: 8c45964a69bf8fa4ba461ed217bc052f, type: 3}
|
||||||
respawnDelay: 10
|
respawnDelay: 10
|
||||||
respawnPanelPrefab: {fileID: 5112555873318329611, guid: 9257920ba4a6256499ad89eeb7d7098a, type: 3}
|
|
||||||
showHealthBar: 1
|
showHealthBar: 1
|
||||||
healthBarPrefab: {fileID: 100000, guid: 8e7a5b12c9f8a4a5ba3c8d1f2e5a7b9c, type: 3}
|
healthBarPrefab: {fileID: 100000, guid: 8e7a5b12c9f8a4a5ba3c8d1f2e5a7b9c, type: 3}
|
||||||
--- !u!143 &3007098678582223509
|
--- !u!143 &3007098678582223509
|
||||||
@@ -418,11 +417,13 @@ MonoBehaviour:
|
|||||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.PlayerStats
|
m_EditorClassIdentifier: Assembly-CSharp::Northbound.PlayerStats
|
||||||
baseMaxHp: 100
|
baseMaxHp: 100
|
||||||
baseDamage: 10
|
baseDamage: 10
|
||||||
baseCapacity: 100
|
baseCapacity: 50
|
||||||
baseManpower: 10
|
baseManpower: 10
|
||||||
baseMoveSpeed: 5
|
baseMoveSpeed: 4
|
||||||
baseSight: 10
|
baseSight: 10
|
||||||
baseAttackRange: 2
|
baseAttackRange: 3
|
||||||
|
baseHpRegen: 1
|
||||||
|
baseHpRegenDelay: 5
|
||||||
--- !u!1 &1862223349553492570
|
--- !u!1 &1862223349553492570
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|||||||
@@ -319,10 +319,12 @@ MonoBehaviour:
|
|||||||
m_Script: {fileID: 11500000, guid: 760137a2fd0da7f458ac4b0ee7f485d6, type: 3}
|
m_Script: {fileID: 11500000, guid: 760137a2fd0da7f458ac4b0ee7f485d6, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.FogOfWarVisibility
|
m_EditorClassIdentifier: Assembly-CSharp::Northbound.FogOfWarVisibility
|
||||||
|
alwaysVisible: 0
|
||||||
showInExploredAreas: 0
|
showInExploredAreas: 0
|
||||||
updateInterval: 0.2
|
updateInterval: 0.2
|
||||||
renderers: []
|
renderers: []
|
||||||
enableDistantVisibility: 1
|
enableDistantVisibility: 1
|
||||||
|
baseVisibilityRange: 10
|
||||||
heightVisibilityMultiplier: 2
|
heightVisibilityMultiplier: 2
|
||||||
minHeightForDistantVisibility: 3
|
minHeightForDistantVisibility: 3
|
||||||
useExploredMaterial: 0
|
useExploredMaterial: 0
|
||||||
|
|||||||
@@ -228,10 +228,12 @@ MonoBehaviour:
|
|||||||
m_Script: {fileID: 11500000, guid: 760137a2fd0da7f458ac4b0ee7f485d6, type: 3}
|
m_Script: {fileID: 11500000, guid: 760137a2fd0da7f458ac4b0ee7f485d6, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.FogOfWarVisibility
|
m_EditorClassIdentifier: Assembly-CSharp::Northbound.FogOfWarVisibility
|
||||||
|
alwaysVisible: 0
|
||||||
showInExploredAreas: 0
|
showInExploredAreas: 0
|
||||||
updateInterval: 0.2
|
updateInterval: 0.2
|
||||||
renderers: []
|
renderers: []
|
||||||
enableDistantVisibility: 1
|
enableDistantVisibility: 1
|
||||||
|
baseVisibilityRange: 10
|
||||||
heightVisibilityMultiplier: 2
|
heightVisibilityMultiplier: 2
|
||||||
minHeightForDistantVisibility: 3
|
minHeightForDistantVisibility: 3
|
||||||
useExploredMaterial: 0
|
useExploredMaterial: 0
|
||||||
|
|||||||
@@ -138,10 +138,12 @@ MonoBehaviour:
|
|||||||
m_Script: {fileID: 11500000, guid: 760137a2fd0da7f458ac4b0ee7f485d6, type: 3}
|
m_Script: {fileID: 11500000, guid: 760137a2fd0da7f458ac4b0ee7f485d6, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.FogOfWarVisibility
|
m_EditorClassIdentifier: Assembly-CSharp::Northbound.FogOfWarVisibility
|
||||||
|
alwaysVisible: 0
|
||||||
showInExploredAreas: 0
|
showInExploredAreas: 0
|
||||||
updateInterval: 0.2
|
updateInterval: 0.2
|
||||||
renderers: []
|
renderers: []
|
||||||
enableDistantVisibility: 1
|
enableDistantVisibility: 1
|
||||||
|
baseVisibilityRange: 10
|
||||||
heightVisibilityMultiplier: 2
|
heightVisibilityMultiplier: 2
|
||||||
minHeightForDistantVisibility: 3
|
minHeightForDistantVisibility: 3
|
||||||
useExploredMaterial: 0
|
useExploredMaterial: 0
|
||||||
|
|||||||
@@ -228,10 +228,12 @@ MonoBehaviour:
|
|||||||
m_Script: {fileID: 11500000, guid: 760137a2fd0da7f458ac4b0ee7f485d6, type: 3}
|
m_Script: {fileID: 11500000, guid: 760137a2fd0da7f458ac4b0ee7f485d6, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.FogOfWarVisibility
|
m_EditorClassIdentifier: Assembly-CSharp::Northbound.FogOfWarVisibility
|
||||||
|
alwaysVisible: 0
|
||||||
showInExploredAreas: 0
|
showInExploredAreas: 0
|
||||||
updateInterval: 0.2
|
updateInterval: 0.2
|
||||||
renderers: []
|
renderers: []
|
||||||
enableDistantVisibility: 1
|
enableDistantVisibility: 1
|
||||||
|
baseVisibilityRange: 10
|
||||||
heightVisibilityMultiplier: 2
|
heightVisibilityMultiplier: 2
|
||||||
minHeightForDistantVisibility: 3
|
minHeightForDistantVisibility: 3
|
||||||
useExploredMaterial: 0
|
useExploredMaterial: 0
|
||||||
|
|||||||
@@ -228,10 +228,12 @@ MonoBehaviour:
|
|||||||
m_Script: {fileID: 11500000, guid: 760137a2fd0da7f458ac4b0ee7f485d6, type: 3}
|
m_Script: {fileID: 11500000, guid: 760137a2fd0da7f458ac4b0ee7f485d6, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.FogOfWarVisibility
|
m_EditorClassIdentifier: Assembly-CSharp::Northbound.FogOfWarVisibility
|
||||||
|
alwaysVisible: 0
|
||||||
showInExploredAreas: 0
|
showInExploredAreas: 0
|
||||||
updateInterval: 0.2
|
updateInterval: 0.2
|
||||||
renderers: []
|
renderers: []
|
||||||
enableDistantVisibility: 1
|
enableDistantVisibility: 1
|
||||||
|
baseVisibilityRange: 10
|
||||||
heightVisibilityMultiplier: 2
|
heightVisibilityMultiplier: 2
|
||||||
minHeightForDistantVisibility: 3
|
minHeightForDistantVisibility: 3
|
||||||
useExploredMaterial: 0
|
useExploredMaterial: 0
|
||||||
|
|||||||
@@ -228,10 +228,12 @@ MonoBehaviour:
|
|||||||
m_Script: {fileID: 11500000, guid: 760137a2fd0da7f458ac4b0ee7f485d6, type: 3}
|
m_Script: {fileID: 11500000, guid: 760137a2fd0da7f458ac4b0ee7f485d6, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.FogOfWarVisibility
|
m_EditorClassIdentifier: Assembly-CSharp::Northbound.FogOfWarVisibility
|
||||||
|
alwaysVisible: 0
|
||||||
showInExploredAreas: 0
|
showInExploredAreas: 0
|
||||||
updateInterval: 0.2
|
updateInterval: 0.2
|
||||||
renderers: []
|
renderers: []
|
||||||
enableDistantVisibility: 1
|
enableDistantVisibility: 1
|
||||||
|
baseVisibilityRange: 10
|
||||||
heightVisibilityMultiplier: 2
|
heightVisibilityMultiplier: 2
|
||||||
minHeightForDistantVisibility: 3
|
minHeightForDistantVisibility: 3
|
||||||
useExploredMaterial: 0
|
useExploredMaterial: 0
|
||||||
|
|||||||
@@ -319,10 +319,12 @@ MonoBehaviour:
|
|||||||
m_Script: {fileID: 11500000, guid: 760137a2fd0da7f458ac4b0ee7f485d6, type: 3}
|
m_Script: {fileID: 11500000, guid: 760137a2fd0da7f458ac4b0ee7f485d6, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.FogOfWarVisibility
|
m_EditorClassIdentifier: Assembly-CSharp::Northbound.FogOfWarVisibility
|
||||||
|
alwaysVisible: 0
|
||||||
showInExploredAreas: 0
|
showInExploredAreas: 0
|
||||||
updateInterval: 0.2
|
updateInterval: 0.2
|
||||||
renderers: []
|
renderers: []
|
||||||
enableDistantVisibility: 1
|
enableDistantVisibility: 1
|
||||||
|
baseVisibilityRange: 10
|
||||||
heightVisibilityMultiplier: 2
|
heightVisibilityMultiplier: 2
|
||||||
minHeightForDistantVisibility: 3
|
minHeightForDistantVisibility: 3
|
||||||
useExploredMaterial: 0
|
useExploredMaterial: 0
|
||||||
|
|||||||
@@ -138,10 +138,12 @@ MonoBehaviour:
|
|||||||
m_Script: {fileID: 11500000, guid: 760137a2fd0da7f458ac4b0ee7f485d6, type: 3}
|
m_Script: {fileID: 11500000, guid: 760137a2fd0da7f458ac4b0ee7f485d6, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.FogOfWarVisibility
|
m_EditorClassIdentifier: Assembly-CSharp::Northbound.FogOfWarVisibility
|
||||||
|
alwaysVisible: 0
|
||||||
showInExploredAreas: 0
|
showInExploredAreas: 0
|
||||||
updateInterval: 0.2
|
updateInterval: 0.2
|
||||||
renderers: []
|
renderers: []
|
||||||
enableDistantVisibility: 1
|
enableDistantVisibility: 1
|
||||||
|
baseVisibilityRange: 10
|
||||||
heightVisibilityMultiplier: 2
|
heightVisibilityMultiplier: 2
|
||||||
minHeightForDistantVisibility: 3
|
minHeightForDistantVisibility: 3
|
||||||
useExploredMaterial: 0
|
useExploredMaterial: 0
|
||||||
|
|||||||
@@ -228,10 +228,12 @@ MonoBehaviour:
|
|||||||
m_Script: {fileID: 11500000, guid: 760137a2fd0da7f458ac4b0ee7f485d6, type: 3}
|
m_Script: {fileID: 11500000, guid: 760137a2fd0da7f458ac4b0ee7f485d6, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.FogOfWarVisibility
|
m_EditorClassIdentifier: Assembly-CSharp::Northbound.FogOfWarVisibility
|
||||||
|
alwaysVisible: 0
|
||||||
showInExploredAreas: 0
|
showInExploredAreas: 0
|
||||||
updateInterval: 0.2
|
updateInterval: 0.2
|
||||||
renderers: []
|
renderers: []
|
||||||
enableDistantVisibility: 1
|
enableDistantVisibility: 1
|
||||||
|
baseVisibilityRange: 10
|
||||||
heightVisibilityMultiplier: 2
|
heightVisibilityMultiplier: 2
|
||||||
minHeightForDistantVisibility: 3
|
minHeightForDistantVisibility: 3
|
||||||
useExploredMaterial: 0
|
useExploredMaterial: 0
|
||||||
|
|||||||
@@ -228,10 +228,12 @@ MonoBehaviour:
|
|||||||
m_Script: {fileID: 11500000, guid: 760137a2fd0da7f458ac4b0ee7f485d6, type: 3}
|
m_Script: {fileID: 11500000, guid: 760137a2fd0da7f458ac4b0ee7f485d6, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.FogOfWarVisibility
|
m_EditorClassIdentifier: Assembly-CSharp::Northbound.FogOfWarVisibility
|
||||||
|
alwaysVisible: 0
|
||||||
showInExploredAreas: 0
|
showInExploredAreas: 0
|
||||||
updateInterval: 0.2
|
updateInterval: 0.2
|
||||||
renderers: []
|
renderers: []
|
||||||
enableDistantVisibility: 1
|
enableDistantVisibility: 1
|
||||||
|
baseVisibilityRange: 10
|
||||||
heightVisibilityMultiplier: 2
|
heightVisibilityMultiplier: 2
|
||||||
minHeightForDistantVisibility: 3
|
minHeightForDistantVisibility: 3
|
||||||
useExploredMaterial: 0
|
useExploredMaterial: 0
|
||||||
|
|||||||
@@ -138,10 +138,12 @@ MonoBehaviour:
|
|||||||
m_Script: {fileID: 11500000, guid: 760137a2fd0da7f458ac4b0ee7f485d6, type: 3}
|
m_Script: {fileID: 11500000, guid: 760137a2fd0da7f458ac4b0ee7f485d6, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.FogOfWarVisibility
|
m_EditorClassIdentifier: Assembly-CSharp::Northbound.FogOfWarVisibility
|
||||||
|
alwaysVisible: 0
|
||||||
showInExploredAreas: 0
|
showInExploredAreas: 0
|
||||||
updateInterval: 0.2
|
updateInterval: 0.2
|
||||||
renderers: []
|
renderers: []
|
||||||
enableDistantVisibility: 1
|
enableDistantVisibility: 1
|
||||||
|
baseVisibilityRange: 10
|
||||||
heightVisibilityMultiplier: 2
|
heightVisibilityMultiplier: 2
|
||||||
minHeightForDistantVisibility: 3
|
minHeightForDistantVisibility: 3
|
||||||
useExploredMaterial: 0
|
useExploredMaterial: 0
|
||||||
|
|||||||
@@ -23,5 +23,5 @@ MonoBehaviour:
|
|||||||
effectOpList:
|
effectOpList:
|
||||||
- mul
|
- mul
|
||||||
effectValueList:
|
effectValueList:
|
||||||
- 1.2
|
- 1.5
|
||||||
sortOrder: 13
|
sortOrder: 13
|
||||||
|
|||||||
@@ -23,5 +23,5 @@ MonoBehaviour:
|
|||||||
effectOpList:
|
effectOpList:
|
||||||
- mul
|
- mul
|
||||||
effectValueList:
|
effectValueList:
|
||||||
- 1.6
|
- 2
|
||||||
sortOrder: 14
|
sortOrder: 14
|
||||||
|
|||||||
@@ -23,5 +23,5 @@ MonoBehaviour:
|
|||||||
effectOpList:
|
effectOpList:
|
||||||
- mul
|
- mul
|
||||||
effectValueList:
|
effectValueList:
|
||||||
- 2
|
- 2.5
|
||||||
sortOrder: 15
|
sortOrder: 15
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -118,6 +118,12 @@ namespace Northbound
|
|||||||
{
|
{
|
||||||
var damageable = targetObj.GetComponent<IDamageable>();
|
var damageable = targetObj.GetComponent<IDamageable>();
|
||||||
damageable?.TakeDamage(_playerStats?.GetDamage() ?? 10, attackerNetworkId);
|
damageable?.TakeDamage(_playerStats?.GetDamage() ?? 10, attackerNetworkId);
|
||||||
|
|
||||||
|
// 공격자를 전투 상태로 기록 (체력 회복 방지)
|
||||||
|
if (_networkPlayerController != null)
|
||||||
|
{
|
||||||
|
_networkPlayerController.MarkInCombat();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -34,7 +34,6 @@ namespace Northbound
|
|||||||
private int currentRotation = 0; // 0-3
|
private int currentRotation = 0; // 0-3
|
||||||
private Material[] originalMaterials;
|
private Material[] originalMaterials;
|
||||||
private Renderer[] previewRenderers;
|
private Renderer[] previewRenderers;
|
||||||
private PlayerInputActions _inputActions;
|
|
||||||
|
|
||||||
// 드래그 건설 관련
|
// 드래그 건설 관련
|
||||||
private bool isDragging = false;
|
private bool isDragging = false;
|
||||||
@@ -45,17 +44,43 @@ namespace Northbound
|
|||||||
// UI 체크 캐싱 (Input System 콜백 내에서 IsPointerOverGameObject() 사용 불가)
|
// UI 체크 캐싱 (Input System 콜백 내에서 IsPointerOverGameObject() 사용 불가)
|
||||||
private bool _isPointerOverUI = false;
|
private bool _isPointerOverUI = false;
|
||||||
|
|
||||||
|
// 플레이어 컨트롤러 참조 (로컬 플레이어 체크용)
|
||||||
|
private NetworkPlayerController _playerController;
|
||||||
|
private bool _isInitialized = false;
|
||||||
|
|
||||||
public override void OnNetworkSpawn()
|
public override void OnNetworkSpawn()
|
||||||
{
|
{
|
||||||
if (!IsOwner) return;
|
_playerController = GetComponent<NetworkPlayerController>();
|
||||||
|
|
||||||
_inputActions = new PlayerInputActions();
|
if (_playerController != null)
|
||||||
_inputActions.Player.ToggleBuildMode.performed += OnToggleBuildMode;
|
{
|
||||||
_inputActions.Player.Rotate.performed += OnRotate;
|
_playerController.OnInputInitialized += TryInitializeInput;
|
||||||
_inputActions.Player.Build.performed += OnBuildPressed;
|
}
|
||||||
_inputActions.Player.Build.canceled += OnBuildReleased;
|
|
||||||
_inputActions.Player.Cancel.performed += OnCancel;
|
// 이미 로컬 플레이어면 입력 초기화 시도
|
||||||
_inputActions.Enable();
|
TryInitializeInput();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Start()
|
||||||
|
{
|
||||||
|
// Start에서 다시 한번 확인 (이벤트 타이밍 문제 해결)
|
||||||
|
TryInitializeInput();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void TryInitializeInput()
|
||||||
|
{
|
||||||
|
if (_isInitialized) return; // 이미 초기화됨
|
||||||
|
if (_playerController == null || !_playerController.IsLocalPlayer) return;
|
||||||
|
if (_playerController.InputActions == null) return;
|
||||||
|
|
||||||
|
_isInitialized = true;
|
||||||
|
|
||||||
|
var inputActions = _playerController.InputActions;
|
||||||
|
inputActions.Player.ToggleBuildMode.performed += OnToggleBuildMode;
|
||||||
|
inputActions.Player.Rotate.performed += OnRotate;
|
||||||
|
inputActions.Player.Build.performed += OnBuildPressed;
|
||||||
|
inputActions.Player.Build.canceled += OnBuildReleased;
|
||||||
|
inputActions.Player.Cancel.performed += OnCancel;
|
||||||
|
|
||||||
// Create default materials if not assigned
|
// Create default materials if not assigned
|
||||||
if (validMaterial == null)
|
if (validMaterial == null)
|
||||||
@@ -118,15 +143,19 @@ namespace Northbound
|
|||||||
|
|
||||||
public override void OnNetworkDespawn()
|
public override void OnNetworkDespawn()
|
||||||
{
|
{
|
||||||
if (IsOwner && _inputActions != null)
|
if (_playerController != null)
|
||||||
{
|
{
|
||||||
_inputActions.Player.ToggleBuildMode.performed -= OnToggleBuildMode;
|
_playerController.OnInputInitialized -= TryInitializeInput;
|
||||||
_inputActions.Player.Rotate.performed -= OnRotate;
|
|
||||||
_inputActions.Player.Build.performed -= OnBuildPressed;
|
if (_isInitialized && _playerController.InputActions != null)
|
||||||
_inputActions.Player.Build.canceled -= OnBuildReleased;
|
{
|
||||||
_inputActions.Player.Cancel.performed -= OnCancel;
|
var inputActions = _playerController.InputActions;
|
||||||
_inputActions.Disable();
|
inputActions.Player.ToggleBuildMode.performed -= OnToggleBuildMode;
|
||||||
_inputActions.Dispose();
|
inputActions.Player.Rotate.performed -= OnRotate;
|
||||||
|
inputActions.Player.Build.performed -= OnBuildPressed;
|
||||||
|
inputActions.Player.Build.canceled -= OnBuildReleased;
|
||||||
|
inputActions.Player.Cancel.performed -= OnCancel;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ClearDragPreviews();
|
ClearDragPreviews();
|
||||||
@@ -134,7 +163,7 @@ namespace Northbound
|
|||||||
|
|
||||||
private void Update()
|
private void Update()
|
||||||
{
|
{
|
||||||
if (!IsOwner) return;
|
if (!_isInitialized) return;
|
||||||
|
|
||||||
// UI 체크 캐싱 (Input System 콜백 내에서 사용하기 위해)
|
// UI 체크 캐싱 (Input System 콜백 내에서 사용하기 위해)
|
||||||
_isPointerOverUI = CheckPointerOverUI();
|
_isPointerOverUI = CheckPointerOverUI();
|
||||||
|
|||||||
@@ -6,8 +6,16 @@ namespace Northbound
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 블랙스미스 건물 - 업그레이드 구매 가능
|
/// 블랙스미스 건물 - 업그레이드 구매 가능
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class Blacksmith : MonoBehaviour, IInteractable
|
public class Blacksmith : NetworkBehaviour, IInteractable, IVisionProvider, ITeamMember
|
||||||
{
|
{
|
||||||
|
[Header("Vision Settings")]
|
||||||
|
[Tooltip("블랙스미스가 제공하는 시야 범위")]
|
||||||
|
public float visionRange = 10f;
|
||||||
|
|
||||||
|
[Header("Team")]
|
||||||
|
[Tooltip("건물의 팀")]
|
||||||
|
public TeamType initialTeam = TeamType.Player;
|
||||||
|
|
||||||
[Header("UI Reference")]
|
[Header("UI Reference")]
|
||||||
[SerializeField] private GameObject _upgradePopupPrefab;
|
[SerializeField] private GameObject _upgradePopupPrefab;
|
||||||
|
|
||||||
@@ -55,9 +63,6 @@ namespace Northbound
|
|||||||
return transform;
|
return transform;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
private void OpenUpgradePopup(ulong playerId)
|
private void OpenUpgradePopup(ulong playerId)
|
||||||
@@ -115,12 +120,63 @@ namespace Northbound
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnDestroy()
|
public override void OnDestroy()
|
||||||
{
|
{
|
||||||
if (_popupInstance != null)
|
if (_popupInstance != null)
|
||||||
{
|
{
|
||||||
Destroy(_popupInstance);
|
Destroy(_popupInstance);
|
||||||
}
|
}
|
||||||
|
base.OnDestroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#region NetworkBehaviour Overrides
|
||||||
|
|
||||||
|
public override void OnNetworkSpawn()
|
||||||
|
{
|
||||||
|
if (IsServer)
|
||||||
|
{
|
||||||
|
// 시야 제공자로 등록
|
||||||
|
FogOfWarSystem.Instance?.RegisterVisionProvider(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void OnNetworkDespawn()
|
||||||
|
{
|
||||||
|
if (IsServer)
|
||||||
|
{
|
||||||
|
// 시야 제공자 등록 해제
|
||||||
|
FogOfWarSystem.Instance?.UnregisterVisionProvider(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region IVisionProvider Implementation
|
||||||
|
|
||||||
|
public ulong GetOwnerId() => 0; // 블랙스미스는 모든 플레이어에게 시야 제공
|
||||||
|
|
||||||
|
public float GetVisionRange() => visionRange;
|
||||||
|
|
||||||
|
Transform IVisionProvider.GetTransform() => transform;
|
||||||
|
|
||||||
|
public bool IsActive() => IsSpawned;
|
||||||
|
|
||||||
|
TeamType IVisionProvider.GetTeam() => initialTeam;
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region ITeamMember Implementation
|
||||||
|
|
||||||
|
public TeamType GetTeam() => initialTeam;
|
||||||
|
|
||||||
|
public bool IsDead() => false; // 블랙스미스는 파괴되지 않음
|
||||||
|
|
||||||
|
public void SetTeam(TeamType team)
|
||||||
|
{
|
||||||
|
// 블랙스미스의 팀은 변경할 수 없음
|
||||||
|
Debug.LogWarning("[Blacksmith] 블랙스미스의 팀은 변경할 수 없습니다.");
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,12 +7,15 @@ namespace Northbound
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 플레이어가 자원을 건내받아 게임의 전역 자원으로 관리하는 중앙 허브
|
/// 플레이어가 자원을 건내받아 게임의 전역 자원으로 관리하는 중앙 허브
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class Core : NetworkBehaviour, IInteractable, IDamageable, ITeamMember
|
public class Core : NetworkBehaviour, IInteractable, IDamageable, ITeamMember, IVisionProvider
|
||||||
{
|
{
|
||||||
[Header("Core Settings")]
|
[Header("Core Settings")]
|
||||||
public int maxStorageCapacity = 1000; // 코어의 최대 저장 용량
|
public int maxStorageCapacity = 1000; // 코어의 최대 저장 용량
|
||||||
public bool unlimitedStorage = false; // 무제한 저장소
|
public bool unlimitedStorage = false; // 무제한 저장소
|
||||||
|
|
||||||
|
[Header("Vision")]
|
||||||
|
public float visionRange = 15f; // 코어가 제공하는 시야 범위
|
||||||
|
|
||||||
[Header("Health")]
|
[Header("Health")]
|
||||||
public int maxHealth = 1000;
|
public int maxHealth = 1000;
|
||||||
public GameObject damageEffectPrefab;
|
public GameObject damageEffectPrefab;
|
||||||
@@ -55,6 +58,9 @@ namespace Northbound
|
|||||||
{
|
{
|
||||||
_totalResources.Value = 0;
|
_totalResources.Value = 0;
|
||||||
_currentHealth.Value = maxHealth;
|
_currentHealth.Value = maxHealth;
|
||||||
|
|
||||||
|
// 시야 제공자로 등록
|
||||||
|
FogOfWarSystem.Instance?.RegisterVisionProvider(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
_currentHealth.OnValueChanged += OnHealthChanged;
|
_currentHealth.OnValueChanged += OnHealthChanged;
|
||||||
@@ -62,6 +68,12 @@ namespace Northbound
|
|||||||
|
|
||||||
public override void OnNetworkDespawn()
|
public override void OnNetworkDespawn()
|
||||||
{
|
{
|
||||||
|
if (IsServer)
|
||||||
|
{
|
||||||
|
// 시야 제공자 등록 해제
|
||||||
|
FogOfWarSystem.Instance?.UnregisterVisionProvider(this);
|
||||||
|
}
|
||||||
|
|
||||||
_currentHealth.OnValueChanged -= OnHealthChanged;
|
_currentHealth.OnValueChanged -= OnHealthChanged;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -372,5 +384,19 @@ namespace Northbound
|
|||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region IVisionProvider Implementation
|
||||||
|
|
||||||
|
public ulong GetOwnerId() => 0; // 코어는 모든 플레이어에게 시야 제공
|
||||||
|
|
||||||
|
public float GetVisionRange() => visionRange;
|
||||||
|
|
||||||
|
Transform IVisionProvider.GetTransform() => transform;
|
||||||
|
|
||||||
|
public bool IsActive() => IsSpawned && !IsDead();
|
||||||
|
|
||||||
|
TeamType IVisionProvider.GetTeam() => TeamType.Player;
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -203,8 +203,8 @@ namespace Northbound
|
|||||||
|
|
||||||
networkObj.SpawnWithOwnership(NetworkManager.Singleton.LocalClientId);
|
networkObj.SpawnWithOwnership(NetworkManager.Singleton.LocalClientId);
|
||||||
|
|
||||||
// 비활성화는 ServerRpc를 통해 처리
|
// NetworkVariable을 통해 가시성 동기화 (기본적으로 숨김)
|
||||||
DisablePickupClientRpc();
|
_resourcePickup.SetVisible(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void HandleCreepDeath(EnemyUnit deadCreep)
|
private void HandleCreepDeath(EnemyUnit deadCreep)
|
||||||
@@ -225,7 +225,8 @@ namespace Northbound
|
|||||||
// 모든 creep이 처치되었으면 ResourcePickup 활성화
|
// 모든 creep이 처치되었으면 ResourcePickup 활성화
|
||||||
if (_spawnedCreeps.Count == 0 && _resourcePickup != null)
|
if (_spawnedCreeps.Count == 0 && _resourcePickup != null)
|
||||||
{
|
{
|
||||||
EnableResourcePickupClientRpc();
|
// NetworkVariable이 자동으로 클라이언트에 동기화됨
|
||||||
|
_resourcePickup.SetVisible(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -262,24 +263,6 @@ namespace Northbound
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[Rpc(SendTo.ClientsAndHost)]
|
|
||||||
private void EnableResourcePickupClientRpc()
|
|
||||||
{
|
|
||||||
if (_resourcePickup != null)
|
|
||||||
{
|
|
||||||
_resourcePickup.gameObject.SetActive(true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
[Rpc(SendTo.ClientsAndHost)]
|
|
||||||
private void DisablePickupClientRpc()
|
|
||||||
{
|
|
||||||
if (_resourcePickup != null)
|
|
||||||
{
|
|
||||||
_resourcePickup.gameObject.SetActive(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private CreepData GetCreepDataFromPrefab(GameObject prefab)
|
private CreepData GetCreepDataFromPrefab(GameObject prefab)
|
||||||
{
|
{
|
||||||
if (prefab == null) return null;
|
if (prefab == null) return null;
|
||||||
|
|||||||
@@ -114,7 +114,7 @@ namespace Northbound
|
|||||||
private bool _isAttacking = false;
|
private bool _isAttacking = false;
|
||||||
private GameObject _pendingAttackTarget;
|
private GameObject _pendingAttackTarget;
|
||||||
private float _attackStartTime;
|
private float _attackStartTime;
|
||||||
private const float ATTACK_TIMEOUT = 1f; // 애니메이션 이벤트 미발생 시 타임아웃
|
private const float ATTACK_TIMEOUT = 2f; // 애니메이션 이벤트 미발생 시 타임아웃 (애니메이션 길이 고려)
|
||||||
|
|
||||||
// 어그로 시스템
|
// 어그로 시스템
|
||||||
private Dictionary<ulong, float> _aggroTable = new Dictionary<ulong, float>();
|
private Dictionary<ulong, float> _aggroTable = new Dictionary<ulong, float>();
|
||||||
@@ -592,6 +592,9 @@ namespace Northbound
|
|||||||
public void OnAttackHit()
|
public void OnAttackHit()
|
||||||
{
|
{
|
||||||
PerformAttack();
|
PerformAttack();
|
||||||
|
// 공격 완료 후 상태 리셋 (타임아웃 방지)
|
||||||
|
_isAttacking = false;
|
||||||
|
_pendingAttackTarget = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -671,6 +674,7 @@ namespace Northbound
|
|||||||
private void DecayAggro()
|
private void DecayAggro()
|
||||||
{
|
{
|
||||||
List<ulong> keysToRemove = new List<ulong>();
|
List<ulong> keysToRemove = new List<ulong>();
|
||||||
|
List<KeyValuePair<ulong, float>> updates = new List<KeyValuePair<ulong, float>>();
|
||||||
|
|
||||||
foreach (var kvp in _aggroTable)
|
foreach (var kvp in _aggroTable)
|
||||||
{
|
{
|
||||||
@@ -681,10 +685,16 @@ namespace Northbound
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_aggroTable[kvp.Key] = newAggro;
|
updates.Add(new KeyValuePair<ulong, float>(kvp.Key, newAggro));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 순회 후 수정 적용
|
||||||
|
foreach (var update in updates)
|
||||||
|
{
|
||||||
|
_aggroTable[update.Key] = update.Value;
|
||||||
|
}
|
||||||
|
|
||||||
// 어그로가 0 이하인 항목 제거
|
// 어그로가 0 이하인 항목 제거
|
||||||
foreach (var key in keysToRemove)
|
foreach (var key in keysToRemove)
|
||||||
{
|
{
|
||||||
@@ -916,6 +926,16 @@ namespace Northbound
|
|||||||
switch (state)
|
switch (state)
|
||||||
{
|
{
|
||||||
case EnemyAIState.Idle:
|
case EnemyAIState.Idle:
|
||||||
|
_agent.isStopped = true;
|
||||||
|
_agent.ResetPath();
|
||||||
|
// 즉시 정지를 위해 velocity 초기화
|
||||||
|
_agent.velocity = Vector3.zero;
|
||||||
|
// 복귀 완료 - 무적 해제
|
||||||
|
if (_enemyUnit != null)
|
||||||
|
{
|
||||||
|
_enemyUnit.SetInvulnerable(false);
|
||||||
|
}
|
||||||
|
break;
|
||||||
case EnemyAIState.Attack:
|
case EnemyAIState.Attack:
|
||||||
_agent.isStopped = true;
|
_agent.isStopped = true;
|
||||||
_agent.ResetPath();
|
_agent.ResetPath();
|
||||||
@@ -940,6 +960,12 @@ namespace Northbound
|
|||||||
_agent.isStopped = false;
|
_agent.isStopped = false;
|
||||||
_agent.speed = moveSpeed;
|
_agent.speed = moveSpeed;
|
||||||
_agent.SetDestination(_originPosition);
|
_agent.SetDestination(_originPosition);
|
||||||
|
// 복귀 시작 - 체력 회복 및 무적
|
||||||
|
if (_enemyUnit != null)
|
||||||
|
{
|
||||||
|
_enemyUnit.HealToFull();
|
||||||
|
_enemyUnit.SetInvulnerable(true);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case EnemyAIState.Dead:
|
case EnemyAIState.Dead:
|
||||||
_agent.isStopped = true;
|
_agent.isStopped = true;
|
||||||
|
|||||||
@@ -9,6 +9,12 @@ namespace Northbound
|
|||||||
[RequireComponent(typeof(Collider))]
|
[RequireComponent(typeof(Collider))]
|
||||||
public class EnemyUnit : NetworkBehaviour, IDamageable, ITeamMember, IHealthProvider
|
public class EnemyUnit : NetworkBehaviour, IDamageable, ITeamMember, IHealthProvider
|
||||||
{
|
{
|
||||||
|
[Header("Fog of War Visibility")]
|
||||||
|
[Tooltip("전장의 안개에 의한 가시성 제어 활성화")]
|
||||||
|
public bool enableFogVisibility = true;
|
||||||
|
|
||||||
|
[Tooltip("가시성 체크 주기 (초)")]
|
||||||
|
public float visibilityCheckInterval = 0.1f;
|
||||||
[Header("Team Settings")]
|
[Header("Team Settings")]
|
||||||
[Tooltip("이 유닛의 팀 (Hostile = 적대세력, Monster = 몬스터)")]
|
[Tooltip("이 유닛의 팀 (Hostile = 적대세력, Monster = 몬스터)")]
|
||||||
public TeamType enemyTeam = TeamType.Hostile;
|
public TeamType enemyTeam = TeamType.Hostile;
|
||||||
@@ -36,6 +42,12 @@ namespace Northbound
|
|||||||
NetworkVariableWritePermission.Server
|
NetworkVariableWritePermission.Server
|
||||||
);
|
);
|
||||||
|
|
||||||
|
private NetworkVariable<bool> _isInvulnerable = new NetworkVariable<bool>(
|
||||||
|
false,
|
||||||
|
NetworkVariableReadPermission.Everyone,
|
||||||
|
NetworkVariableWritePermission.Server
|
||||||
|
);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 사망 시 발생하는 이벤트 (매개변수: killerId)
|
/// 사망 시 발생하는 이벤트 (매개변수: killerId)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -48,10 +60,20 @@ namespace Northbound
|
|||||||
|
|
||||||
private UnitHealthBar _healthBar;
|
private UnitHealthBar _healthBar;
|
||||||
|
|
||||||
|
// 전장의 안개 가시성
|
||||||
|
private Renderer[] _renderers;
|
||||||
|
private float _visibilityTimer;
|
||||||
|
private bool _lastVisibleState = true;
|
||||||
|
private bool _initializedVisibility = false;
|
||||||
|
private ulong _localPlayerId = ulong.MaxValue;
|
||||||
|
|
||||||
public override void OnNetworkSpawn()
|
public override void OnNetworkSpawn()
|
||||||
{
|
{
|
||||||
base.OnNetworkSpawn();
|
base.OnNetworkSpawn();
|
||||||
|
|
||||||
|
// 렌더러 캐시 (가시성 제어용)
|
||||||
|
_renderers = GetComponentsInChildren<Renderer>();
|
||||||
|
|
||||||
if (IsServer)
|
if (IsServer)
|
||||||
{
|
{
|
||||||
_currentHealth.Value = maxHealth;
|
_currentHealth.Value = maxHealth;
|
||||||
@@ -66,6 +88,12 @@ namespace Northbound
|
|||||||
{
|
{
|
||||||
CreateHealthBar();
|
CreateHealthBar();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 클라이언트에서는 기본적으로 렌더러 비활성화
|
||||||
|
if (enableFogVisibility && IsClient)
|
||||||
|
{
|
||||||
|
SetRenderersEnabled(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void OnNetworkDespawn()
|
public override void OnNetworkDespawn()
|
||||||
@@ -74,6 +102,146 @@ namespace Northbound
|
|||||||
base.OnNetworkDespawn();
|
base.OnNetworkDespawn();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void Update()
|
||||||
|
{
|
||||||
|
// 클라이언트에서만 가시성 체크 (호스트 포함)
|
||||||
|
if (enableFogVisibility && IsClient)
|
||||||
|
{
|
||||||
|
UpdateFogVisibility();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 전장의 안개에 따른 가시성 업데이트 (클라이언트 전용)
|
||||||
|
/// </summary>
|
||||||
|
private void UpdateFogVisibility()
|
||||||
|
{
|
||||||
|
_visibilityTimer += Time.deltaTime;
|
||||||
|
if (_visibilityTimer < visibilityCheckInterval) return;
|
||||||
|
_visibilityTimer = 0f;
|
||||||
|
|
||||||
|
// 로컬 플레이어 ID 캐시
|
||||||
|
if (_localPlayerId == ulong.MaxValue)
|
||||||
|
{
|
||||||
|
_localPlayerId = GetLocalPlayerId();
|
||||||
|
if (_localPlayerId == ulong.MaxValue)
|
||||||
|
{
|
||||||
|
// 로컬 플레이어를 찾지 못함 - 기본적으로 숨김
|
||||||
|
if (_initializedVisibility) return;
|
||||||
|
_initializedVisibility = true;
|
||||||
|
SetRenderersEnabled(false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// FogOfWarSystem이 없으면 항상 보임
|
||||||
|
if (FogOfWarSystem.Instance == null)
|
||||||
|
{
|
||||||
|
if (_initializedVisibility) return;
|
||||||
|
_initializedVisibility = true;
|
||||||
|
SetRenderersEnabled(true); // FogOfWar가 없으면 항상 보임
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// FogOfWar가 비활성화되어 있으면 항상 보임
|
||||||
|
if (!FogOfWarSystem.Instance.gameObject.activeInHierarchy)
|
||||||
|
{
|
||||||
|
if (_initializedVisibility) return;
|
||||||
|
_initializedVisibility = true;
|
||||||
|
SetRenderersEnabled(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 현재 위치의 가시성 확인
|
||||||
|
FogOfWarState state = FogOfWarSystem.Instance.GetVisibilityState(_localPlayerId, transform.position);
|
||||||
|
bool shouldBeVisible = (state == FogOfWarState.Visible);
|
||||||
|
|
||||||
|
// 초기화되지 않은 경우 강제로 설정
|
||||||
|
if (!_initializedVisibility)
|
||||||
|
{
|
||||||
|
_initializedVisibility = true;
|
||||||
|
_lastVisibleState = shouldBeVisible;
|
||||||
|
SetRenderersEnabled(shouldBeVisible);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 상태가 변경된 경우에만 렌더러 업데이트
|
||||||
|
if (shouldBeVisible != _lastVisibleState)
|
||||||
|
{
|
||||||
|
_lastVisibleState = shouldBeVisible;
|
||||||
|
SetRenderersEnabled(shouldBeVisible);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 로컬 플레이어의 실제 ID 가져오기
|
||||||
|
/// </summary>
|
||||||
|
private ulong GetLocalPlayerId()
|
||||||
|
{
|
||||||
|
if (NetworkManager.Singleton == null)
|
||||||
|
{
|
||||||
|
return ulong.MaxValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 방법 1: SpawnManager에서 찾기
|
||||||
|
var localPlayer = NetworkManager.Singleton.SpawnManager.GetLocalPlayerObject();
|
||||||
|
|
||||||
|
// 방법 2: LocalClient에서 찾기
|
||||||
|
if (localPlayer == null && NetworkManager.Singleton.LocalClient != null)
|
||||||
|
{
|
||||||
|
localPlayer = NetworkManager.Singleton.LocalClient.PlayerObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 방법 3: 직접 검색 (IsLocalPlayer인 플레이어 찾기)
|
||||||
|
if (localPlayer == null)
|
||||||
|
{
|
||||||
|
var allPlayers = FindObjectsByType<NetworkPlayerController>(FindObjectsSortMode.None);
|
||||||
|
foreach (var player in allPlayers)
|
||||||
|
{
|
||||||
|
if (player.IsLocalPlayer)
|
||||||
|
{
|
||||||
|
localPlayer = player.GetComponent<NetworkObject>();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (localPlayer == null)
|
||||||
|
{
|
||||||
|
return ulong.MaxValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
var playerController = localPlayer.GetComponent<NetworkPlayerController>();
|
||||||
|
if (playerController == null)
|
||||||
|
{
|
||||||
|
return ulong.MaxValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
return playerController.OwnerPlayerId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 모든 렌더러 활성화/비활성화
|
||||||
|
/// </summary>
|
||||||
|
private void SetRenderersEnabled(bool enabled)
|
||||||
|
{
|
||||||
|
if (_renderers == null) return;
|
||||||
|
|
||||||
|
foreach (var renderer in _renderers)
|
||||||
|
{
|
||||||
|
if (renderer != null)
|
||||||
|
{
|
||||||
|
renderer.enabled = enabled;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 체력바도 함께 처리
|
||||||
|
if (_healthBar != null)
|
||||||
|
{
|
||||||
|
_healthBar.gameObject.SetActive(enabled);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void OnHealthChanged(int previousValue, int newValue)
|
private void OnHealthChanged(int previousValue, int newValue)
|
||||||
{
|
{
|
||||||
if (_healthBar != null)
|
if (_healthBar != null)
|
||||||
@@ -106,6 +274,9 @@ namespace Northbound
|
|||||||
if (!IsServer) return;
|
if (!IsServer) return;
|
||||||
if (_currentHealth.Value <= 0) return;
|
if (_currentHealth.Value <= 0) return;
|
||||||
|
|
||||||
|
// 무적 상태면 데미지 무시
|
||||||
|
if (_isInvulnerable.Value) return;
|
||||||
|
|
||||||
// 공격자의 팀 확인
|
// 공격자의 팀 확인
|
||||||
if (NetworkManager.Singleton.SpawnManager.SpawnedObjects.TryGetValue(attackerId, out NetworkObject attackerObj))
|
if (NetworkManager.Singleton.SpawnManager.SpawnedObjects.TryGetValue(attackerId, out NetworkObject attackerObj))
|
||||||
{
|
{
|
||||||
@@ -207,6 +378,24 @@ namespace Northbound
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region Invulnerability & Healing
|
||||||
|
|
||||||
|
public bool IsInvulnerable() => _isInvulnerable.Value;
|
||||||
|
|
||||||
|
public void SetInvulnerable(bool value)
|
||||||
|
{
|
||||||
|
if (!IsServer) return;
|
||||||
|
_isInvulnerable.Value = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void HealToFull()
|
||||||
|
{
|
||||||
|
if (!IsServer) return;
|
||||||
|
_currentHealth.Value = maxHealth;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
private void OnDrawGizmosSelected()
|
private void OnDrawGizmosSelected()
|
||||||
{
|
{
|
||||||
#if UNITY_EDITOR
|
#if UNITY_EDITOR
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ namespace Northbound
|
|||||||
private Color[] _colors;
|
private Color[] _colors;
|
||||||
private MeshRenderer _meshRenderer;
|
private MeshRenderer _meshRenderer;
|
||||||
private float _updateTimer;
|
private float _updateTimer;
|
||||||
private ulong _localClientId;
|
private ulong _localPlayerId;
|
||||||
private bool _isInitialized;
|
private bool _isInitialized;
|
||||||
|
|
||||||
private void Start()
|
private void Start()
|
||||||
@@ -49,14 +49,15 @@ namespace Northbound
|
|||||||
{
|
{
|
||||||
if (_isInitialized) return;
|
if (_isInitialized) return;
|
||||||
|
|
||||||
_localClientId = NetworkManager.Singleton.LocalClientId;
|
|
||||||
|
|
||||||
var fogSystem = FogOfWarSystem.Instance;
|
var fogSystem = FogOfWarSystem.Instance;
|
||||||
if (fogSystem == null)
|
if (fogSystem == null)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 로컬 플레이어의 실제 ID 가져오기 (없어도 텍스처는 생성)
|
||||||
|
_localPlayerId = GetLocalPlayerId();
|
||||||
|
|
||||||
// 텍스처 생성 (Bilinear filtering for smooth edges)
|
// 텍스처 생성 (Bilinear filtering for smooth edges)
|
||||||
_fogTexture = new Texture2D(fogSystem.gridWidth, fogSystem.gridHeight)
|
_fogTexture = new Texture2D(fogSystem.gridWidth, fogSystem.gridHeight)
|
||||||
{
|
{
|
||||||
@@ -105,11 +106,16 @@ namespace Northbound
|
|||||||
if (!_isInitialized && NetworkManager.Singleton != null && NetworkManager.Singleton.IsClient)
|
if (!_isInitialized && NetworkManager.Singleton != null && NetworkManager.Singleton.IsClient)
|
||||||
{
|
{
|
||||||
Initialize();
|
Initialize();
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!_isInitialized) return;
|
if (!_isInitialized) return;
|
||||||
|
|
||||||
|
// 로컬 플레이어 ID가 아직 없으면 다시 시도
|
||||||
|
if (_localPlayerId == ulong.MaxValue)
|
||||||
|
{
|
||||||
|
_localPlayerId = GetLocalPlayerId();
|
||||||
|
}
|
||||||
|
|
||||||
_updateTimer += Time.deltaTime;
|
_updateTimer += Time.deltaTime;
|
||||||
if (_updateTimer >= updateInterval)
|
if (_updateTimer >= updateInterval)
|
||||||
{
|
{
|
||||||
@@ -135,7 +141,12 @@ namespace Northbound
|
|||||||
if (_meshRenderer != null)
|
if (_meshRenderer != null)
|
||||||
_meshRenderer.enabled = true;
|
_meshRenderer.enabled = true;
|
||||||
|
|
||||||
var fogData = fogSystem.GetPlayerFogData(_localClientId);
|
var fogData = fogSystem.GetPlayerFogData(_localPlayerId);
|
||||||
|
if (fogData == null)
|
||||||
|
{
|
||||||
|
// fogData가 null이면 아직 서버에서 데이터를 받지 못함
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
for (int y = 0; y < fogSystem.gridHeight; y++)
|
for (int y = 0; y < fogSystem.gridHeight; y++)
|
||||||
{
|
{
|
||||||
@@ -164,6 +175,48 @@ namespace Northbound
|
|||||||
_fogTexture.Apply();
|
_fogTexture.Apply();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 로컬 플레이어의 실제 ID 가져오기
|
||||||
|
/// </summary>
|
||||||
|
private ulong GetLocalPlayerId()
|
||||||
|
{
|
||||||
|
if (NetworkManager.Singleton == null) return ulong.MaxValue;
|
||||||
|
|
||||||
|
// 방법 1: SpawnManager에서 찾기
|
||||||
|
NetworkObject localPlayer = null;
|
||||||
|
if (NetworkManager.Singleton.SpawnManager != null)
|
||||||
|
{
|
||||||
|
localPlayer = NetworkManager.Singleton.SpawnManager.GetLocalPlayerObject();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 방법 2: LocalClient에서 찾기
|
||||||
|
if (localPlayer == null && NetworkManager.Singleton.LocalClient != null)
|
||||||
|
{
|
||||||
|
localPlayer = NetworkManager.Singleton.LocalClient.PlayerObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 방법 3: 직접 검색 (IsLocalPlayer인 플레이어 찾기)
|
||||||
|
if (localPlayer == null)
|
||||||
|
{
|
||||||
|
var allPlayers = FindObjectsByType<NetworkPlayerController>(FindObjectsSortMode.None);
|
||||||
|
foreach (var player in allPlayers)
|
||||||
|
{
|
||||||
|
if (player.IsLocalPlayer)
|
||||||
|
{
|
||||||
|
localPlayer = player.GetComponent<NetworkObject>();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (localPlayer == null) return ulong.MaxValue;
|
||||||
|
|
||||||
|
var playerController = localPlayer.GetComponent<NetworkPlayerController>();
|
||||||
|
if (playerController == null) return ulong.MaxValue;
|
||||||
|
|
||||||
|
return playerController.OwnerPlayerId;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Apply box blur smoothing to create smooth circular vision edges
|
/// Apply box blur smoothing to create smooth circular vision edges
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -219,7 +219,7 @@ namespace Northbound
|
|||||||
|
|
||||||
[Header("Editor Settings")]
|
[Header("Editor Settings")]
|
||||||
[Tooltip("Disable fog of war in Unity Editor for easier development")]
|
[Tooltip("Disable fog of war in Unity Editor for easier development")]
|
||||||
public bool disableInEditor = true;
|
public bool disableInEditor = false;
|
||||||
|
|
||||||
// 서버: 각 플레이어별 가시성 맵
|
// 서버: 각 플레이어별 가시성 맵
|
||||||
private Dictionary<ulong, FogOfWarData> _serverFogData = new Dictionary<ulong, FogOfWarData>();
|
private Dictionary<ulong, FogOfWarData> _serverFogData = new Dictionary<ulong, FogOfWarData>();
|
||||||
@@ -250,11 +250,18 @@ namespace Northbound
|
|||||||
{
|
{
|
||||||
// Server: Register client connected callback to initialize fog data
|
// Server: Register client connected callback to initialize fog data
|
||||||
NetworkManager.Singleton.OnClientConnectedCallback += OnClientConnected;
|
NetworkManager.Singleton.OnClientConnectedCallback += OnClientConnected;
|
||||||
|
|
||||||
|
// 호스트 자신의 데이터도 초기화 (OnClientConnected가 호스트에게는 호출되지 않을 수 있음)
|
||||||
|
ulong hostClientId = NetworkManager.Singleton.LocalClientId;
|
||||||
|
if (!_serverFogData.ContainsKey(hostClientId))
|
||||||
|
{
|
||||||
|
_serverFogData[hostClientId] = new FogOfWarData(gridWidth, gridHeight);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IsClient && !IsServer)
|
// 클라이언트는 로컬 데이터 초기화 (호스트 포함)
|
||||||
|
if (IsClient)
|
||||||
{
|
{
|
||||||
// 클라이언트는 로컬 데이터 초기화
|
|
||||||
_localFogData = new FogOfWarData(gridWidth, gridHeight);
|
_localFogData = new FogOfWarData(gridWidth, gridHeight);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -300,7 +307,8 @@ namespace Northbound
|
|||||||
if (!_visionProviders.Contains(provider))
|
if (!_visionProviders.Contains(provider))
|
||||||
{
|
{
|
||||||
_visionProviders.Add(provider);
|
_visionProviders.Add(provider);
|
||||||
// Debug.Log($"<color=cyan>[FogOfWar] Vision Provider 등록: {provider.GetTransform().name} (Owner: {provider.GetOwnerId()})</color>");
|
// 즉시 시야 업데이트 트리거
|
||||||
|
_updateTimer = updateInterval;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -317,13 +325,18 @@ namespace Northbound
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public FogOfWarData GetPlayerFogData(ulong clientId)
|
public FogOfWarData GetPlayerFogData(ulong clientId)
|
||||||
{
|
{
|
||||||
// 클라이언트는 자신의 로컬 데이터 반환
|
// 클라이언트(호스트 포함)는 자신의 로컬 데이터 반환
|
||||||
if (IsClient && !IsServer)
|
// 서버에서 계산된 시야 데이터는 ClientRpc로 동기화됨
|
||||||
|
if (IsClient)
|
||||||
{
|
{
|
||||||
|
if (_localFogData == null)
|
||||||
|
{
|
||||||
|
_localFogData = new FogOfWarData(gridWidth, gridHeight);
|
||||||
|
}
|
||||||
return _localFogData;
|
return _localFogData;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 서버는 해당 클라이언트의 데이터 반환
|
// 순수 서버(전용 서버)의 경우 서버 데이터 반환
|
||||||
if (!_serverFogData.ContainsKey(clientId))
|
if (!_serverFogData.ContainsKey(clientId))
|
||||||
{
|
{
|
||||||
_serverFogData[clientId] = new FogOfWarData(gridWidth, gridHeight);
|
_serverFogData[clientId] = new FogOfWarData(gridWidth, gridHeight);
|
||||||
@@ -342,12 +355,14 @@ namespace Northbound
|
|||||||
fogData.ClearCurrentVision();
|
fogData.ClearCurrentVision();
|
||||||
}
|
}
|
||||||
|
|
||||||
// 모든 시야 제공자의 시야 범위 계산
|
// 모든 시야 제공자의 시야 범위 계산 (팀 시야 공유)
|
||||||
foreach (var provider in _visionProviders)
|
foreach (var provider in _visionProviders)
|
||||||
{
|
{
|
||||||
if (provider == null || !provider.IsActive()) continue;
|
if (provider == null || !provider.IsActive()) continue;
|
||||||
|
|
||||||
ulong ownerId = provider.GetOwnerId();
|
ulong ownerId = provider.GetOwnerId();
|
||||||
|
TeamType providerTeam = provider.GetTeam();
|
||||||
|
|
||||||
if (!_serverFogData.ContainsKey(ownerId))
|
if (!_serverFogData.ContainsKey(ownerId))
|
||||||
{
|
{
|
||||||
_serverFogData[ownerId] = new FogOfWarData(gridWidth, gridHeight);
|
_serverFogData[ownerId] = new FogOfWarData(gridWidth, gridHeight);
|
||||||
@@ -356,7 +371,8 @@ namespace Northbound
|
|||||||
Vector3 position = provider.GetTransform().position;
|
Vector3 position = provider.GetTransform().position;
|
||||||
float visionRange = provider.GetVisionRange();
|
float visionRange = provider.GetVisionRange();
|
||||||
|
|
||||||
RevealArea(ownerId, position, visionRange);
|
// 같은 팀의 모든 멤버에게 시야 공유
|
||||||
|
RevealAreaForTeam(providerTeam, position, visionRange);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 각 클라이언트에게 시야 데이터 전송
|
// 각 클라이언트에게 시야 데이터 전송
|
||||||
@@ -365,6 +381,16 @@ namespace Northbound
|
|||||||
ulong clientId = kvp.Key;
|
ulong clientId = kvp.Key;
|
||||||
FogOfWarData fogData = kvp.Value;
|
FogOfWarData fogData = kvp.Value;
|
||||||
|
|
||||||
|
// 해당 클라이언트가 여전히 연결되어 있는지 확인
|
||||||
|
// 호스트의 경우 ConnectedClients에 없을 수 있으므로 별도 체크
|
||||||
|
bool isHost = (clientId == NetworkManager.Singleton.LocalClientId);
|
||||||
|
bool isConnected = NetworkManager.Singleton.ConnectedClients.ContainsKey(clientId);
|
||||||
|
|
||||||
|
if (!isHost && !isConnected)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
// 압축된 데이터로 전송
|
// 압축된 데이터로 전송
|
||||||
byte[] visibleData = fogData.GetVisibleData();
|
byte[] visibleData = fogData.GetVisibleData();
|
||||||
byte[] exploredData = fogData.GetExploredData();
|
byte[] exploredData = fogData.GetExploredData();
|
||||||
@@ -380,6 +406,47 @@ namespace Northbound
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 같은 팀의 모든 멤버에게 시야 공개
|
||||||
|
/// </summary>
|
||||||
|
private void RevealAreaForTeam(TeamType team, Vector3 worldPosition, float radius)
|
||||||
|
{
|
||||||
|
// 해당 팀의 모든 멤버 찾기
|
||||||
|
foreach (var kvp in _serverFogData)
|
||||||
|
{
|
||||||
|
ulong clientId = kvp.Key;
|
||||||
|
|
||||||
|
// 클라이언트의 팀 확인
|
||||||
|
if (GetClientTeam(clientId) == team)
|
||||||
|
{
|
||||||
|
RevealArea(clientId, worldPosition, radius);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 클라이언트의 팀 가져오기
|
||||||
|
/// </summary>
|
||||||
|
private TeamType GetClientTeam(ulong clientId)
|
||||||
|
{
|
||||||
|
if (NetworkManager.Singleton == null) return TeamType.Neutral;
|
||||||
|
|
||||||
|
// 연결된 클라이언트에서 플레이어 오브젝트 찾기
|
||||||
|
if (NetworkManager.Singleton.SpawnManager.SpawnedObjects != null)
|
||||||
|
{
|
||||||
|
foreach (var netObj in NetworkManager.Singleton.SpawnManager.SpawnedObjects.Values)
|
||||||
|
{
|
||||||
|
var playerController = netObj.GetComponent<NetworkPlayerController>();
|
||||||
|
if (playerController != null && playerController.OwnerPlayerId == clientId)
|
||||||
|
{
|
||||||
|
return playerController.GetTeam();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return TeamType.Neutral;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 클라이언트에게 안개 데이터 전송
|
/// 클라이언트에게 안개 데이터 전송
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -10,6 +10,9 @@ namespace Northbound
|
|||||||
public class FogOfWarVisibility : MonoBehaviour
|
public class FogOfWarVisibility : MonoBehaviour
|
||||||
{
|
{
|
||||||
[Header("Visibility Settings")]
|
[Header("Visibility Settings")]
|
||||||
|
[Tooltip("Always show this object regardless of fog state (for core, important structures)")]
|
||||||
|
public bool alwaysVisible = false;
|
||||||
|
|
||||||
[Tooltip("Show this object in explored areas (greyed out) or only when visible")]
|
[Tooltip("Show this object in explored areas (greyed out) or only when visible")]
|
||||||
public bool showInExploredAreas = false;
|
public bool showInExploredAreas = false;
|
||||||
|
|
||||||
@@ -19,10 +22,13 @@ namespace Northbound
|
|||||||
[Tooltip("Renderers to show/hide (auto-detected if empty)")]
|
[Tooltip("Renderers to show/hide (auto-detected if empty)")]
|
||||||
public Renderer[] renderers;
|
public Renderer[] renderers;
|
||||||
|
|
||||||
[Header("Height-Based Distant Visibility")]
|
[Header("Extended Visibility")]
|
||||||
[Tooltip("Enable visibility from farther away based on object height")]
|
[Tooltip("Enable visibility from farther away based on object height")]
|
||||||
public bool enableDistantVisibility = true;
|
public bool enableDistantVisibility = true;
|
||||||
|
|
||||||
|
[Tooltip("Base visibility range (additional range beyond player vision)")]
|
||||||
|
public float baseVisibilityRange = 10f;
|
||||||
|
|
||||||
[Tooltip("Visibility range multiplier per unit of height (default: 2x vision per 1m height)")]
|
[Tooltip("Visibility range multiplier per unit of height (default: 2x vision per 1m height)")]
|
||||||
public float heightVisibilityMultiplier = 2.0f;
|
public float heightVisibilityMultiplier = 2.0f;
|
||||||
|
|
||||||
@@ -39,7 +45,7 @@ namespace Northbound
|
|||||||
private Material[] _originalMaterials;
|
private Material[] _originalMaterials;
|
||||||
private bool _isVisible = false;
|
private bool _isVisible = false;
|
||||||
private float _updateTimer;
|
private float _updateTimer;
|
||||||
private ulong _localClientId;
|
private ulong _localPlayerId;
|
||||||
private bool _isInitialized = false;
|
private bool _isInitialized = false;
|
||||||
private float _objectHeight = 0f;
|
private float _objectHeight = 0f;
|
||||||
|
|
||||||
@@ -76,8 +82,17 @@ namespace Northbound
|
|||||||
// CRITICAL: Start hidden and stay hidden until fog system confirms visibility
|
// CRITICAL: Start hidden and stay hidden until fog system confirms visibility
|
||||||
// Force initial hide - don't use SetVisible because _isVisible defaults to false
|
// Force initial hide - don't use SetVisible because _isVisible defaults to false
|
||||||
// which would cause early return
|
// which would cause early return
|
||||||
_isVisible = true; // Set to true first so SetVisible(false) actually runs
|
// 단, alwaysVisible이면 항상 보임
|
||||||
SetVisible(false);
|
if (alwaysVisible)
|
||||||
|
{
|
||||||
|
_isVisible = false;
|
||||||
|
SetVisible(true);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_isVisible = true; // Set to true first so SetVisible(false) actually runs
|
||||||
|
SetVisible(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -130,7 +145,13 @@ namespace Northbound
|
|||||||
{
|
{
|
||||||
if (NetworkManager.Singleton != null && NetworkManager.Singleton.IsClient)
|
if (NetworkManager.Singleton != null && NetworkManager.Singleton.IsClient)
|
||||||
{
|
{
|
||||||
_localClientId = NetworkManager.Singleton.LocalClientId;
|
_localPlayerId = GetLocalPlayerId();
|
||||||
|
if (_localPlayerId == ulong.MaxValue)
|
||||||
|
{
|
||||||
|
// Local player not found yet - stay hidden
|
||||||
|
SetVisible(false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
_isInitialized = true;
|
_isInitialized = true;
|
||||||
|
|
||||||
// Force immediate visibility update on initialization
|
// Force immediate visibility update on initialization
|
||||||
@@ -152,18 +173,67 @@ namespace Northbound
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 로컬 플레이어의 실제 ID 가져오기
|
||||||
|
/// </summary>
|
||||||
|
private ulong GetLocalPlayerId()
|
||||||
|
{
|
||||||
|
if (NetworkManager.Singleton == null) return ulong.MaxValue;
|
||||||
|
|
||||||
|
// 방법 1: SpawnManager에서 찾기
|
||||||
|
NetworkObject localPlayer = null;
|
||||||
|
if (NetworkManager.Singleton.SpawnManager != null)
|
||||||
|
{
|
||||||
|
localPlayer = NetworkManager.Singleton.SpawnManager.GetLocalPlayerObject();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 방법 2: LocalClient에서 찾기
|
||||||
|
if (localPlayer == null && NetworkManager.Singleton.LocalClient != null)
|
||||||
|
{
|
||||||
|
localPlayer = NetworkManager.Singleton.LocalClient.PlayerObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 방법 3: 직접 검색 (IsLocalPlayer인 플레이어 찾기)
|
||||||
|
if (localPlayer == null)
|
||||||
|
{
|
||||||
|
var allPlayers = FindObjectsByType<NetworkPlayerController>(FindObjectsSortMode.None);
|
||||||
|
foreach (var player in allPlayers)
|
||||||
|
{
|
||||||
|
if (player.IsLocalPlayer)
|
||||||
|
{
|
||||||
|
localPlayer = player.GetComponent<NetworkObject>();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (localPlayer == null) return ulong.MaxValue;
|
||||||
|
|
||||||
|
var playerController = localPlayer.GetComponent<NetworkPlayerController>();
|
||||||
|
if (playerController == null) return ulong.MaxValue;
|
||||||
|
|
||||||
|
return playerController.OwnerPlayerId;
|
||||||
|
}
|
||||||
|
|
||||||
private void UpdateVisibility()
|
private void UpdateVisibility()
|
||||||
{
|
{
|
||||||
var fogSystem = FogOfWarSystem.Instance;
|
// 항상 보이는 객체는 fog 체크 안함
|
||||||
if (fogSystem == null)
|
if (alwaysVisible)
|
||||||
{
|
{
|
||||||
// No fog system - stay hidden for safety
|
SetVisible(true);
|
||||||
SetVisible(false);
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var fogSystem = FogOfWarSystem.Instance;
|
||||||
|
if (fogSystem == null || !fogSystem.gameObject.activeInHierarchy)
|
||||||
|
{
|
||||||
|
// No fog system or disabled - always visible
|
||||||
|
SetVisible(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Wait for fog data to be initialized
|
// Wait for fog data to be initialized
|
||||||
var fogData = fogSystem.GetPlayerFogData(_localClientId);
|
var fogData = fogSystem.GetPlayerFogData(_localPlayerId);
|
||||||
if (fogData == null)
|
if (fogData == null)
|
||||||
{
|
{
|
||||||
// Fog data not ready yet - stay hidden
|
// Fog data not ready yet - stay hidden
|
||||||
@@ -171,7 +241,7 @@ namespace Northbound
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
FogOfWarState fogState = fogSystem.GetVisibilityState(_localClientId, transform.position);
|
FogOfWarState fogState = fogSystem.GetVisibilityState(_localPlayerId, transform.position);
|
||||||
|
|
||||||
// Check for distant visibility based on height
|
// Check for distant visibility based on height
|
||||||
bool isDistantVisible = false;
|
bool isDistantVisible = false;
|
||||||
@@ -242,11 +312,14 @@ namespace Northbound
|
|||||||
// Calculate extended visibility range based on height
|
// Calculate extended visibility range based on height
|
||||||
// Taller objects can be seen from farther away
|
// Taller objects can be seen from farther away
|
||||||
// Formula: Base range + (height - minHeight) * multiplier
|
// Formula: Base range + (height - minHeight) * multiplier
|
||||||
float extendedRange = (_objectHeight - minHeightForDistantVisibility) * heightVisibilityMultiplier;
|
float extendedRange = 0f;
|
||||||
|
if (_objectHeight >= minHeightForDistantVisibility)
|
||||||
|
{
|
||||||
|
extendedRange = (_objectHeight - minHeightForDistantVisibility) * heightVisibilityMultiplier;
|
||||||
|
}
|
||||||
|
|
||||||
// Get player's vision range (assume average vision provider has ~15 unit range)
|
// Total range = player vision + base visibility + height bonus
|
||||||
float baseVisionRange = 15f; // You can make this configurable
|
float totalRange = baseVisibilityRange + extendedRange;
|
||||||
float totalRange = baseVisionRange + extendedRange;
|
|
||||||
|
|
||||||
return distanceToPlayer <= totalRange;
|
return distanceToPlayer <= totalRange;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,5 +26,10 @@ namespace Northbound
|
|||||||
/// 현재 활성화 상태인지
|
/// 현재 활성화 상태인지
|
||||||
/// </summary>
|
/// </summary>
|
||||||
bool IsActive();
|
bool IsActive();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 소속 팀 (팀 시야 공유용)
|
||||||
|
/// </summary>
|
||||||
|
TeamType GetTeam();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -54,6 +54,10 @@ public class NetworkPlayerController : NetworkBehaviour, ITeamMember, IDamageabl
|
|||||||
private UnitHealthBar _healthBar;
|
private UnitHealthBar _healthBar;
|
||||||
private RespawnCountdownUI _respawnCountdownUI;
|
private RespawnCountdownUI _respawnCountdownUI;
|
||||||
|
|
||||||
|
// 체력 자연 회복
|
||||||
|
private float _lastCombatTime;
|
||||||
|
private float _hpRegenAccumulator;
|
||||||
|
|
||||||
// 이 플레이어가 로컬 플레이어인지 확인
|
// 이 플레이어가 로컬 플레이어인지 확인
|
||||||
|
|
||||||
|
|
||||||
@@ -61,9 +65,15 @@ public class NetworkPlayerController : NetworkBehaviour, ITeamMember, IDamageabl
|
|||||||
|
|
||||||
public ulong OwnerPlayerId => _ownerPlayerId.Value;
|
public ulong OwnerPlayerId => _ownerPlayerId.Value;
|
||||||
|
|
||||||
|
// 중앙 집중식 입력 관리 - 다른 컴포넌트에서 참조
|
||||||
|
public PlayerInputActions InputActions => _inputActions;
|
||||||
|
|
||||||
// 소유자 변경 이벤트
|
// 소유자 변경 이벤트
|
||||||
public event Action<ulong> OnOwnerChanged;
|
public event Action<ulong> OnOwnerChanged;
|
||||||
|
|
||||||
|
// 입력 시스템 초기화 완료 이벤트
|
||||||
|
public event Action OnInputInitialized;
|
||||||
|
|
||||||
void Awake()
|
void Awake()
|
||||||
{
|
{
|
||||||
_controller = GetComponent<CharacterController>();
|
_controller = GetComponent<CharacterController>();
|
||||||
@@ -137,6 +147,9 @@ public class NetworkPlayerController : NetworkBehaviour, ITeamMember, IDamageabl
|
|||||||
|
|
||||||
_inputActions = new PlayerInputActions();
|
_inputActions = new PlayerInputActions();
|
||||||
_inputActions.Enable();
|
_inputActions.Enable();
|
||||||
|
|
||||||
|
// 입력 초기화 완료 이벤트 발생
|
||||||
|
OnInputInitialized?.Invoke();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -148,6 +161,28 @@ public class NetworkPlayerController : NetworkBehaviour, ITeamMember, IDamageabl
|
|||||||
_ownerPlayerId.Value = ownerPlayerId;
|
_ownerPlayerId.Value = ownerPlayerId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 입력 강제 복구 (입력이 멈췄을 때 호출)
|
||||||
|
/// </summary>
|
||||||
|
public void ForceRecoverInput()
|
||||||
|
{
|
||||||
|
if (!IsLocalPlayer) return;
|
||||||
|
|
||||||
|
// InputActions가 없으면 초기화 시도
|
||||||
|
if (_inputActions == null)
|
||||||
|
{
|
||||||
|
TryInitializeLocalPlayer();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// InputActions가 있지만 비활성화되어 있으면 활성화
|
||||||
|
if (!_inputActions.Player.enabled && _currentHealth.Value > 0)
|
||||||
|
{
|
||||||
|
_inputActions.Enable();
|
||||||
|
Debug.Log("[NetworkPlayerController] 입력 강제 복구 완료");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public override void OnNetworkDespawn()
|
public override void OnNetworkDespawn()
|
||||||
{
|
{
|
||||||
_currentHealth.OnValueChanged -= OnHealthChanged;
|
_currentHealth.OnValueChanged -= OnHealthChanged;
|
||||||
@@ -161,13 +196,47 @@ public class NetworkPlayerController : NetworkBehaviour, ITeamMember, IDamageabl
|
|||||||
base.OnNetworkDespawn();
|
base.OnNetworkDespawn();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 이동 동기화 설정
|
||||||
|
private float _moveSendInterval = 0.016f; // ~60Hz 전송
|
||||||
|
private float _moveSendTimer;
|
||||||
|
private Vector2 _lastSentMoveInput;
|
||||||
|
|
||||||
|
// 서버 측 이동 입력 저장
|
||||||
|
private Vector2 _serverMoveInput;
|
||||||
|
|
||||||
|
// 입력 복구 체크
|
||||||
|
private float _inputRecoveryCheckInterval = 1f; // 1초마다 체크
|
||||||
|
private float _inputRecoveryCheckTimer;
|
||||||
|
|
||||||
void Update()
|
void Update()
|
||||||
{
|
{
|
||||||
|
// 서버에서 체력 자연 회복 처리
|
||||||
|
if (IsServer)
|
||||||
|
{
|
||||||
|
UpdateHealthRegeneration();
|
||||||
|
}
|
||||||
|
|
||||||
// 로컬 플레이어만 입력 처리
|
// 로컬 플레이어만 입력 처리
|
||||||
if (!IsLocalPlayer) return;
|
if (!IsLocalPlayer) return;
|
||||||
|
|
||||||
// 입력 시스템이 초기화되지 않았으면 스킵
|
// 입력 시스템이 초기화되지 않았으면 초기화 시도
|
||||||
if (_inputActions == null) return;
|
if (_inputActions == null)
|
||||||
|
{
|
||||||
|
TryInitializeLocalPlayer();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 주기적으로 입력 상태 확인 및 자동 복구 (살아있는데 입력이 비활성화된 경우)
|
||||||
|
_inputRecoveryCheckTimer += Time.deltaTime;
|
||||||
|
if (_inputRecoveryCheckTimer >= _inputRecoveryCheckInterval)
|
||||||
|
{
|
||||||
|
_inputRecoveryCheckTimer = 0f;
|
||||||
|
if (_currentHealth.Value > 0 && !_inputActions.Player.enabled)
|
||||||
|
{
|
||||||
|
Debug.LogWarning("[NetworkPlayerController] 입력이 비활성화되어 있음 - 자동 복구");
|
||||||
|
_inputActions.Enable();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 죽었으면 이동 불가
|
// 죽었으면 이동 불가
|
||||||
if (_currentHealth.Value <= 0) return;
|
if (_currentHealth.Value <= 0) return;
|
||||||
@@ -181,41 +250,59 @@ public class NetworkPlayerController : NetworkBehaviour, ITeamMember, IDamageabl
|
|||||||
|
|
||||||
if (isActionBlocked)
|
if (isActionBlocked)
|
||||||
{
|
{
|
||||||
// 서버에 이동 중지 알림 (애니메이션 포함)
|
// 서버에 이동 중지 알림
|
||||||
MoveServerRpc(Vector2.zero);
|
if (_lastSentMoveInput != Vector2.zero)
|
||||||
|
{
|
||||||
|
_lastSentMoveInput = Vector2.zero;
|
||||||
|
MoveServerRpc(Vector2.zero);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
_moveInput = _inputActions.Player.Move.ReadValue<Vector2>();
|
_moveInput = _inputActions.Player.Move.ReadValue<Vector2>();
|
||||||
|
|
||||||
// 서버에 이동 요청 전송 (애니메이션 포함)
|
// 일정 간격으로만 서버에 전송 (네트워크 부하 감소)
|
||||||
MoveServerRpc(_moveInput);
|
_moveSendTimer += Time.deltaTime;
|
||||||
|
if (_moveSendTimer >= _moveSendInterval || _moveInput != _lastSentMoveInput)
|
||||||
|
{
|
||||||
|
_moveSendTimer = 0f;
|
||||||
|
_lastSentMoveInput = _moveInput;
|
||||||
|
MoveServerRpc(_moveInput);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void FixedUpdate()
|
||||||
|
{
|
||||||
|
// 서버에서만 물리 이동 처리
|
||||||
|
if (!IsServer) return;
|
||||||
|
if (_currentHealth.Value <= 0) return;
|
||||||
|
|
||||||
|
Vector3 move = new Vector3(_serverMoveInput.x, 0, _serverMoveInput.y).normalized;
|
||||||
|
|
||||||
|
if (move.magnitude >= 0.1f)
|
||||||
|
{
|
||||||
|
Quaternion targetRotation = Quaternion.LookRotation(move);
|
||||||
|
transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, rotationSpeed * Time.fixedDeltaTime);
|
||||||
|
|
||||||
|
if (_controller != null)
|
||||||
|
{
|
||||||
|
float moveSpeed = _playerStats?.GetMoveSpeed() ?? 5f;
|
||||||
|
_controller.Move(move * moveSpeed * Time.fixedDeltaTime);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 애니메이션 업데이트
|
||||||
|
if (_networkAnimator != null)
|
||||||
|
{
|
||||||
|
_networkAnimator.Animator.SetFloat("MoveSpeed", move.magnitude);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[Rpc(SendTo.Server)]
|
[Rpc(SendTo.Server)]
|
||||||
private void MoveServerRpc(Vector2 moveInput)
|
private void MoveServerRpc(Vector2 moveInput)
|
||||||
{
|
{
|
||||||
// 죽었으면 이동 불가
|
// 서버에 입력만 저장, 실제 이동은 FixedUpdate에서 처리
|
||||||
if (_currentHealth.Value <= 0) return;
|
_serverMoveInput = moveInput;
|
||||||
|
|
||||||
Vector3 move = new Vector3(moveInput.x, 0, moveInput.y).normalized;
|
|
||||||
|
|
||||||
// NetworkAnimator로 애니메이션 동기화
|
|
||||||
if (_networkAnimator != null)
|
|
||||||
{
|
|
||||||
_networkAnimator.Animator.SetFloat("MoveSpeed", move.magnitude);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (move.magnitude >= 0.1f)
|
|
||||||
{
|
|
||||||
Quaternion targetRotation = Quaternion.LookRotation(move);
|
|
||||||
transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, rotationSpeed * Time.deltaTime);
|
|
||||||
|
|
||||||
if (_controller != null)
|
|
||||||
{
|
|
||||||
_controller.Move(move * (_playerStats?.GetMoveSpeed() ?? 5f) * Time.deltaTime);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#region ITeamMember Implementation
|
#region ITeamMember Implementation
|
||||||
@@ -257,6 +344,9 @@ public class NetworkPlayerController : NetworkBehaviour, ITeamMember, IDamageabl
|
|||||||
int actualDamage = Mathf.Min(damage, _currentHealth.Value);
|
int actualDamage = Mathf.Min(damage, _currentHealth.Value);
|
||||||
_currentHealth.Value -= actualDamage;
|
_currentHealth.Value -= actualDamage;
|
||||||
|
|
||||||
|
// 전투 상태 기록 (회복 방지)
|
||||||
|
MarkInCombat();
|
||||||
|
|
||||||
// 데미지 이펙트
|
// 데미지 이펙트
|
||||||
ShowDamageEffectClientRpc();
|
ShowDamageEffectClientRpc();
|
||||||
|
|
||||||
@@ -478,6 +568,62 @@ public class NetworkPlayerController : NetworkBehaviour, ITeamMember, IDamageabl
|
|||||||
|
|
||||||
public int GetCurrentHealth() => _currentHealth.Value;
|
public int GetCurrentHealth() => _currentHealth.Value;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 전투 상태 기록 (데미지를 받거나 입힐 때 호출)
|
||||||
|
/// </summary>
|
||||||
|
public void MarkInCombat()
|
||||||
|
{
|
||||||
|
_lastCombatTime = Time.time;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 현재 전투 중인지 확인 (회복 대기 시간이 지났는지)
|
||||||
|
/// </summary>
|
||||||
|
public bool IsInCombat()
|
||||||
|
{
|
||||||
|
if (_playerStats == null) return false;
|
||||||
|
float regenDelay = _playerStats.GetHpRegenDelay();
|
||||||
|
return (Time.time - _lastCombatTime) < regenDelay;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 서버에서 체력 자연 회복 처리
|
||||||
|
/// </summary>
|
||||||
|
private void UpdateHealthRegeneration()
|
||||||
|
{
|
||||||
|
// 죽었으면 회복하지 않음
|
||||||
|
if (_currentHealth.Value <= 0) return;
|
||||||
|
|
||||||
|
// 이미 최대 체력이면 회복하지 않음
|
||||||
|
int maxHealth = GetMaxHealth();
|
||||||
|
if (_currentHealth.Value >= maxHealth)
|
||||||
|
{
|
||||||
|
_hpRegenAccumulator = 0f;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 전투 중이면 회복하지 않음
|
||||||
|
if (IsInCombat()) return;
|
||||||
|
|
||||||
|
// 회복량 계산
|
||||||
|
float hpRegen = _playerStats?.GetHpRegen() ?? 0f;
|
||||||
|
if (hpRegen <= 0f) return;
|
||||||
|
|
||||||
|
// 프레임당 회복량 누적
|
||||||
|
_hpRegenAccumulator += hpRegen * Time.deltaTime;
|
||||||
|
|
||||||
|
// 1 이상 누적되면 정수만큼 회복
|
||||||
|
if (_hpRegenAccumulator >= 1f)
|
||||||
|
{
|
||||||
|
int healAmount = Mathf.FloorToInt(_hpRegenAccumulator);
|
||||||
|
_hpRegenAccumulator -= healAmount;
|
||||||
|
|
||||||
|
// 실제 회복
|
||||||
|
int actualHeal = Mathf.Min(healAmount, maxHealth - _currentHealth.Value);
|
||||||
|
_currentHealth.Value += actualHeal;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public int GetMaxHealth() => _playerStats?.GetMaxHp() ?? 100;
|
public int GetMaxHealth() => _playerStats?.GetMaxHp() ?? 100;
|
||||||
|
|
||||||
public float GetHealthPercentage()
|
public float GetHealthPercentage()
|
||||||
|
|||||||
@@ -17,11 +17,11 @@ namespace Northbound
|
|||||||
[Header("Animation")]
|
[Header("Animation")]
|
||||||
public bool playAnimations = true;
|
public bool playAnimations = true;
|
||||||
|
|
||||||
private PlayerInputActions _inputActions;
|
|
||||||
private Dictionary<string, IAction> _actions = new Dictionary<string, IAction>();
|
private Dictionary<string, IAction> _actions = new Dictionary<string, IAction>();
|
||||||
private Animator _animator;
|
private Animator _animator;
|
||||||
private NetworkAnimator _networkAnimator;
|
private NetworkAnimator _networkAnimator;
|
||||||
private NetworkPlayerController _networkPlayerController;
|
private NetworkPlayerController _networkPlayerController;
|
||||||
|
private bool _isInputInitialized = false;
|
||||||
|
|
||||||
// 로컬 플레이어인지 확인
|
// 로컬 플레이어인지 확인
|
||||||
private bool IsLocalPlayer => _networkPlayerController != null && _networkPlayerController.IsLocalPlayer;
|
private bool IsLocalPlayer => _networkPlayerController != null && _networkPlayerController.IsLocalPlayer;
|
||||||
@@ -49,12 +49,19 @@ namespace Northbound
|
|||||||
if (_networkPlayerController != null)
|
if (_networkPlayerController != null)
|
||||||
{
|
{
|
||||||
_networkPlayerController.OnOwnerChanged += OnOwnerPlayerIdChanged;
|
_networkPlayerController.OnOwnerChanged += OnOwnerPlayerIdChanged;
|
||||||
|
_networkPlayerController.OnInputInitialized += TryInitializeInput;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 이미 로컬 플레이어면 입력 초기화
|
// 이미 로컬 플레이어면 입력 초기화
|
||||||
TryInitializeInput();
|
TryInitializeInput();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void Start()
|
||||||
|
{
|
||||||
|
// Start에서 다시 한번 확인 (이벤트 타이밍 문제 해결)
|
||||||
|
TryInitializeInput();
|
||||||
|
}
|
||||||
|
|
||||||
private void OnOwnerPlayerIdChanged(ulong newOwnerId)
|
private void OnOwnerPlayerIdChanged(ulong newOwnerId)
|
||||||
{
|
{
|
||||||
TryInitializeInput();
|
TryInitializeInput();
|
||||||
@@ -63,11 +70,11 @@ namespace Northbound
|
|||||||
private void TryInitializeInput()
|
private void TryInitializeInput()
|
||||||
{
|
{
|
||||||
if (!IsLocalPlayer) return;
|
if (!IsLocalPlayer) return;
|
||||||
if (_inputActions != null) return;
|
if (_isInputInitialized) return; // 이미 초기화됨
|
||||||
|
if (_networkPlayerController.InputActions == null) return; // 아직 InputActions가 없음
|
||||||
|
|
||||||
_inputActions = new PlayerInputActions();
|
_isInputInitialized = true;
|
||||||
_inputActions.Player.Attack.performed += OnAttack;
|
_networkPlayerController.InputActions.Player.Attack.performed += OnAttack;
|
||||||
_inputActions.Enable();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void OnNetworkDespawn()
|
public override void OnNetworkDespawn()
|
||||||
@@ -75,13 +82,13 @@ namespace Northbound
|
|||||||
if (_networkPlayerController != null)
|
if (_networkPlayerController != null)
|
||||||
{
|
{
|
||||||
_networkPlayerController.OnOwnerChanged -= OnOwnerPlayerIdChanged;
|
_networkPlayerController.OnOwnerChanged -= OnOwnerPlayerIdChanged;
|
||||||
}
|
_networkPlayerController.OnInputInitialized -= TryInitializeInput;
|
||||||
|
|
||||||
if (_inputActions != null)
|
// 입력 이벤트 해제
|
||||||
{
|
if (_networkPlayerController.InputActions != null)
|
||||||
_inputActions.Player.Attack.performed -= OnAttack;
|
{
|
||||||
_inputActions.Disable();
|
_networkPlayerController.InputActions.Player.Attack.performed -= OnAttack;
|
||||||
_inputActions.Dispose();
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -126,11 +133,7 @@ namespace Northbound
|
|||||||
|
|
||||||
override public void OnDestroy()
|
override public void OnDestroy()
|
||||||
{
|
{
|
||||||
if (_inputActions != null)
|
// 입력 정리는 NetworkPlayerController에서 담당
|
||||||
{
|
|
||||||
_inputActions.Dispose();
|
|
||||||
}
|
|
||||||
|
|
||||||
base.OnDestroy();
|
base.OnDestroy();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,40 +0,0 @@
|
|||||||
using Northbound;
|
|
||||||
using UnityEngine;
|
|
||||||
|
|
||||||
[RequireComponent(typeof(Rigidbody))]
|
|
||||||
public class PlayerController : MonoBehaviour
|
|
||||||
{
|
|
||||||
[Header("Movement Settings")]
|
|
||||||
[SerializeField] private float moveSpeed = 5f;
|
|
||||||
|
|
||||||
private Rigidbody rb;
|
|
||||||
private Vector3 moveDirection;
|
|
||||||
private PlayerInteraction playerInteraction;
|
|
||||||
|
|
||||||
void Start()
|
|
||||||
{
|
|
||||||
rb = GetComponent<Rigidbody>();
|
|
||||||
rb.constraints = RigidbodyConstraints.FreezeRotation;
|
|
||||||
playerInteraction = GetComponent<PlayerInteraction>();
|
|
||||||
}
|
|
||||||
|
|
||||||
void Update()
|
|
||||||
{
|
|
||||||
if (playerInteraction != null && playerInteraction.IsInteracting)
|
|
||||||
return;
|
|
||||||
|
|
||||||
float horizontal = Input.GetAxisRaw("Horizontal");
|
|
||||||
float vertical = Input.GetAxisRaw("Vertical");
|
|
||||||
|
|
||||||
moveDirection = new Vector3(horizontal, 0f, vertical).normalized;
|
|
||||||
}
|
|
||||||
|
|
||||||
void FixedUpdate()
|
|
||||||
{
|
|
||||||
rb.linearVelocity = new Vector3(
|
|
||||||
moveDirection.x * moveSpeed,
|
|
||||||
rb.linearVelocity.y,
|
|
||||||
moveDirection.z * moveSpeed
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 7a3e5b8c4d2f1a9e6b0c3d7e8f1a2b3c
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
@@ -33,7 +33,6 @@ namespace Northbound
|
|||||||
[Header("Worker")]
|
[Header("Worker")]
|
||||||
public Worker assignedWorker;
|
public Worker assignedWorker;
|
||||||
|
|
||||||
private PlayerInputActions _inputActions;
|
|
||||||
private IInteractable _currentInteractable;
|
private IInteractable _currentInteractable;
|
||||||
private IInteractable _unavailableInteractable;
|
private IInteractable _unavailableInteractable;
|
||||||
private Camera _mainCamera;
|
private Camera _mainCamera;
|
||||||
@@ -48,6 +47,7 @@ namespace Northbound
|
|||||||
|
|
||||||
private NetworkPlayerController _networkPlayerController;
|
private NetworkPlayerController _networkPlayerController;
|
||||||
private PlayerStats _playerStats;
|
private PlayerStats _playerStats;
|
||||||
|
private bool _isInputInitialized = false;
|
||||||
|
|
||||||
public bool IsInteracting => _isInteracting;
|
public bool IsInteracting => _isInteracting;
|
||||||
public float WorkPower => _playerStats?.GetManpower() ?? 10f;
|
public float WorkPower => _playerStats?.GetManpower() ?? 10f;
|
||||||
@@ -77,12 +77,19 @@ namespace Northbound
|
|||||||
if (_networkPlayerController != null)
|
if (_networkPlayerController != null)
|
||||||
{
|
{
|
||||||
_networkPlayerController.OnOwnerChanged += OnOwnerPlayerIdChanged;
|
_networkPlayerController.OnOwnerChanged += OnOwnerPlayerIdChanged;
|
||||||
|
_networkPlayerController.OnInputInitialized += TryInitializeInput;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 이미 로컬 플레이어면 입력 초기화
|
// 이미 로컬 플레이어면 입력 초기화
|
||||||
TryInitializeInput();
|
TryInitializeInput();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void Start()
|
||||||
|
{
|
||||||
|
// Start에서 다시 한번 확인 (이벤트 타이밍 문제 해결)
|
||||||
|
TryInitializeInput();
|
||||||
|
}
|
||||||
|
|
||||||
private void OnOwnerPlayerIdChanged(ulong newOwnerId)
|
private void OnOwnerPlayerIdChanged(ulong newOwnerId)
|
||||||
{
|
{
|
||||||
TryInitializeInput();
|
TryInitializeInput();
|
||||||
@@ -91,12 +98,12 @@ namespace Northbound
|
|||||||
private void TryInitializeInput()
|
private void TryInitializeInput()
|
||||||
{
|
{
|
||||||
if (!IsLocalPlayer) return;
|
if (!IsLocalPlayer) return;
|
||||||
if (_inputActions != null) return;
|
if (_isInputInitialized) return; // 이미 초기화됨
|
||||||
|
if (_networkPlayerController.InputActions == null) return; // 아직 InputActions가 없음
|
||||||
|
|
||||||
|
_isInputInitialized = true;
|
||||||
_mainCamera = Camera.main;
|
_mainCamera = Camera.main;
|
||||||
_inputActions = new PlayerInputActions();
|
_networkPlayerController.InputActions.Player.Interact.performed += OnInteract;
|
||||||
_inputActions.Player.Interact.performed += OnInteract;
|
|
||||||
_inputActions.Enable();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void OnNetworkDespawn()
|
public override void OnNetworkDespawn()
|
||||||
@@ -104,13 +111,13 @@ namespace Northbound
|
|||||||
if (_networkPlayerController != null)
|
if (_networkPlayerController != null)
|
||||||
{
|
{
|
||||||
_networkPlayerController.OnOwnerChanged -= OnOwnerPlayerIdChanged;
|
_networkPlayerController.OnOwnerChanged -= OnOwnerPlayerIdChanged;
|
||||||
}
|
_networkPlayerController.OnInputInitialized -= TryInitializeInput;
|
||||||
|
|
||||||
if (_inputActions != null)
|
// 입력 이벤트 해제
|
||||||
{
|
if (_networkPlayerController.InputActions != null)
|
||||||
_inputActions.Player.Interact.performed -= OnInteract;
|
{
|
||||||
_inputActions.Disable();
|
_networkPlayerController.InputActions.Player.Interact.performed -= OnInteract;
|
||||||
_inputActions.Dispose();
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -402,10 +409,7 @@ namespace Northbound
|
|||||||
|
|
||||||
public override void OnDestroy()
|
public override void OnDestroy()
|
||||||
{
|
{
|
||||||
if (_inputActions != null)
|
// 입력 정리는 NetworkPlayerController에서 담당
|
||||||
{
|
|
||||||
_inputActions.Dispose();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -19,6 +19,12 @@ namespace Northbound
|
|||||||
[SerializeField] private float baseSight = 10f;
|
[SerializeField] private float baseSight = 10f;
|
||||||
[SerializeField] private float baseAttackRange = 2f;
|
[SerializeField] private float baseAttackRange = 2f;
|
||||||
|
|
||||||
|
[Header("Health Regeneration")]
|
||||||
|
[Tooltip("초당 체력 회복량")]
|
||||||
|
[SerializeField] private float baseHpRegen = 2f;
|
||||||
|
[Tooltip("전투 종료 후 회복 시작까지의 대기 시간 (초)")]
|
||||||
|
[SerializeField] private float baseHpRegenDelay = 5f;
|
||||||
|
|
||||||
private PlayerUpgradeManager _upgradeManager;
|
private PlayerUpgradeManager _upgradeManager;
|
||||||
|
|
||||||
private void Awake()
|
private void Awake()
|
||||||
@@ -129,6 +135,25 @@ namespace Northbound
|
|||||||
return baseAttackRange + bonus;
|
return baseAttackRange + bonus;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 초당 체력 회복량 반환
|
||||||
|
/// </summary>
|
||||||
|
public float GetHpRegen()
|
||||||
|
{
|
||||||
|
float bonus = CalculateStatBonus("player_hp_regen");
|
||||||
|
return baseHpRegen + bonus;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 전투 종료 후 회복 시작 대기 시간 반환 (초)
|
||||||
|
/// </summary>
|
||||||
|
public float GetHpRegenDelay()
|
||||||
|
{
|
||||||
|
float bonus = CalculateStatBonus("player_hp_regen_delay");
|
||||||
|
// delay는 보통 줄어드는 것이 좋으므로 음수 bonus는 감소로 처리
|
||||||
|
return Mathf.Max(1f, baseHpRegenDelay + bonus);
|
||||||
|
}
|
||||||
|
|
||||||
#region Base Stat Setters (에디터/초기화용)
|
#region Base Stat Setters (에디터/초기화용)
|
||||||
|
|
||||||
public void SetBaseMaxHp(int value) => baseMaxHp = value;
|
public void SetBaseMaxHp(int value) => baseMaxHp = value;
|
||||||
@@ -138,6 +163,8 @@ namespace Northbound
|
|||||||
public void SetBaseMoveSpeed(float value) => baseMoveSpeed = value;
|
public void SetBaseMoveSpeed(float value) => baseMoveSpeed = value;
|
||||||
public void SetBaseSight(float value) => baseSight = value;
|
public void SetBaseSight(float value) => baseSight = value;
|
||||||
public void SetBaseAttackRange(float value) => baseAttackRange = value;
|
public void SetBaseAttackRange(float value) => baseAttackRange = value;
|
||||||
|
public void SetBaseHpRegen(float value) => baseHpRegen = value;
|
||||||
|
public void SetBaseHpRegenDelay(float value) => baseHpRegenDelay = value;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
@@ -153,7 +180,9 @@ namespace Northbound
|
|||||||
$" Manpower: {GetManpower()} (기본: {baseManpower})\n" +
|
$" Manpower: {GetManpower()} (기본: {baseManpower})\n" +
|
||||||
$" Move Speed: {GetMoveSpeed()} (기본: {baseMoveSpeed})\n" +
|
$" Move Speed: {GetMoveSpeed()} (기본: {baseMoveSpeed})\n" +
|
||||||
$" Sight: {GetSight()} (기본: {baseSight})\n" +
|
$" Sight: {GetSight()} (기본: {baseSight})\n" +
|
||||||
$" Attack Range: {GetAttackRange()} (기본: {baseAttackRange})");
|
$" Attack Range: {GetAttackRange()} (기본: {baseAttackRange})\n" +
|
||||||
|
$" HP Regen: {GetHpRegen():F1}/s (기본: {baseHpRegen})\n" +
|
||||||
|
$" HP Regen Delay: {GetHpRegenDelay():F1}s (기본: {baseHpRegenDelay})");
|
||||||
|
|
||||||
if (_upgradeManager != null)
|
if (_upgradeManager != null)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -9,10 +9,12 @@ namespace Northbound
|
|||||||
public class PlayerVisionProvider : NetworkBehaviour, IVisionProvider
|
public class PlayerVisionProvider : NetworkBehaviour, IVisionProvider
|
||||||
{
|
{
|
||||||
private PlayerStats _playerStats;
|
private PlayerStats _playerStats;
|
||||||
|
private NetworkPlayerController _playerController;
|
||||||
|
|
||||||
public override void OnNetworkSpawn()
|
public override void OnNetworkSpawn()
|
||||||
{
|
{
|
||||||
_playerStats = GetComponent<PlayerStats>();
|
_playerStats = GetComponent<PlayerStats>();
|
||||||
|
_playerController = GetComponent<NetworkPlayerController>();
|
||||||
if (IsServer)
|
if (IsServer)
|
||||||
{
|
{
|
||||||
FogOfWarSystem.Instance?.RegisterVisionProvider(this);
|
FogOfWarSystem.Instance?.RegisterVisionProvider(this);
|
||||||
@@ -27,10 +29,13 @@ namespace Northbound
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public ulong GetOwnerId() => OwnerClientId;
|
// NetworkPlayerController.OwnerPlayerId 사용 (실제 플레이어 ID)
|
||||||
|
// OwnerClientId는 서버 소유권이므로 잘못된 ID 반환
|
||||||
|
public ulong GetOwnerId() => _playerController?.OwnerPlayerId ?? OwnerClientId;
|
||||||
public float GetVisionRange() => _playerStats?.GetSight() ?? 10f;
|
public float GetVisionRange() => _playerStats?.GetSight() ?? 10f;
|
||||||
public Transform GetTransform() => transform;
|
public Transform GetTransform() => transform;
|
||||||
public bool IsActive() => IsSpawned;
|
public bool IsActive() => IsSpawned;
|
||||||
|
public TeamType GetTeam() => _playerController?.GetTeam() ?? TeamType.Player;
|
||||||
|
|
||||||
private void OnDrawGizmosSelected()
|
private void OnDrawGizmosSelected()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -28,7 +28,74 @@ namespace Northbound
|
|||||||
public GameObject pickupEffectPrefab;
|
public GameObject pickupEffectPrefab;
|
||||||
public Transform effectSpawnPoint;
|
public Transform effectSpawnPoint;
|
||||||
|
|
||||||
|
// 가시성 동기화 (기본적으로 숨김)
|
||||||
|
private NetworkVariable<bool> _isVisible = new NetworkVariable<bool>(
|
||||||
|
false,
|
||||||
|
NetworkVariableReadPermission.Everyone,
|
||||||
|
NetworkVariableWritePermission.Server
|
||||||
|
);
|
||||||
|
|
||||||
private bool _isCollected = false;
|
private bool _isCollected = false;
|
||||||
|
private Renderer[] _renderers;
|
||||||
|
private Collider[] _colliders;
|
||||||
|
|
||||||
|
public override void OnNetworkSpawn()
|
||||||
|
{
|
||||||
|
base.OnNetworkSpawn();
|
||||||
|
|
||||||
|
// 렌더러와 콜라이더 캐시
|
||||||
|
_renderers = GetComponentsInChildren<Renderer>();
|
||||||
|
_colliders = GetComponentsInChildren<Collider>();
|
||||||
|
|
||||||
|
// 초기 가시성 적용
|
||||||
|
UpdateVisibility(_isVisible.Value);
|
||||||
|
|
||||||
|
// 가시성 변경 이벤트 구독
|
||||||
|
_isVisible.OnValueChanged += OnVisibilityChanged;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void OnNetworkDespawn()
|
||||||
|
{
|
||||||
|
_isVisible.OnValueChanged -= OnVisibilityChanged;
|
||||||
|
base.OnNetworkDespawn();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnVisibilityChanged(bool previousValue, bool newValue)
|
||||||
|
{
|
||||||
|
UpdateVisibility(newValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void UpdateVisibility(bool visible)
|
||||||
|
{
|
||||||
|
if (_renderers != null)
|
||||||
|
{
|
||||||
|
foreach (var renderer in _renderers)
|
||||||
|
{
|
||||||
|
if (renderer != null)
|
||||||
|
renderer.enabled = visible;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_colliders != null)
|
||||||
|
{
|
||||||
|
foreach (var collider in _colliders)
|
||||||
|
{
|
||||||
|
if (collider != null)
|
||||||
|
collider.enabled = visible;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 가시성 설정 (서버만 호출 가능)
|
||||||
|
/// </summary>
|
||||||
|
public void SetVisible(bool visible)
|
||||||
|
{
|
||||||
|
if (IsServer)
|
||||||
|
{
|
||||||
|
_isVisible.Value = visible;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public bool CanInteract(ulong playerId)
|
public bool CanInteract(ulong playerId)
|
||||||
{
|
{
|
||||||
|
|||||||
391
Assets/Scripts/UI/TeamHealthUI.cs
Normal file
391
Assets/Scripts/UI/TeamHealthUI.cs
Normal file
@@ -0,0 +1,391 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.UI;
|
||||||
|
using TMPro;
|
||||||
|
using Unity.Netcode;
|
||||||
|
|
||||||
|
namespace Northbound
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 팀원 체력 UI 관리
|
||||||
|
/// Slot 1: 로컬 플레이어 (본인)
|
||||||
|
/// Slot 2~4: 다른 플레이어 (플레이어 ID 순)
|
||||||
|
/// </summary>
|
||||||
|
public class TeamHealthUI : MonoBehaviour
|
||||||
|
{
|
||||||
|
[Header("Slot References (자동 할당됨)")]
|
||||||
|
[SerializeField] private TeamCardSlot slot1; // 로컬 플레이어 (본인)
|
||||||
|
[SerializeField] private TeamCardSlot slot2; // 다른 플레이어 1
|
||||||
|
[SerializeField] private TeamCardSlot slot3; // 다른 플레이어 2
|
||||||
|
[SerializeField] private TeamCardSlot slot4; // 다른 플레이어 3
|
||||||
|
|
||||||
|
private Dictionary<ulong, NetworkPlayerController> _playerControllers = new Dictionary<ulong, NetworkPlayerController>();
|
||||||
|
private Dictionary<ulong, TeamCardSlot> _playerSlotMapping = new Dictionary<ulong, TeamCardSlot>();
|
||||||
|
private ulong _localPlayerId = ulong.MaxValue;
|
||||||
|
|
||||||
|
private void Awake()
|
||||||
|
{
|
||||||
|
// 슬롯 초기화
|
||||||
|
InitializeSlots();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Start()
|
||||||
|
{
|
||||||
|
// 네트워크 이벤트 구독
|
||||||
|
if (NetworkManager.Singleton != null)
|
||||||
|
{
|
||||||
|
NetworkManager.Singleton.OnClientConnectedCallback += OnClientConnected;
|
||||||
|
NetworkManager.Singleton.OnClientDisconnectCallback += OnClientDisconnect;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 이미 연결된 플레이어들 처리
|
||||||
|
RefreshAllPlayers();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnDestroy()
|
||||||
|
{
|
||||||
|
// 이벤트 구독 해제
|
||||||
|
if (NetworkManager.Singleton != null)
|
||||||
|
{
|
||||||
|
NetworkManager.Singleton.OnClientConnectedCallback -= OnClientConnected;
|
||||||
|
NetworkManager.Singleton.OnClientDisconnectCallback -= OnClientDisconnect;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 모든 플레이어 체력 변경 이벤트 구독 해제
|
||||||
|
foreach (var kvp in _playerControllers)
|
||||||
|
{
|
||||||
|
if (kvp.Value != null)
|
||||||
|
{
|
||||||
|
kvp.Value.OnOwnerChanged -= OnPlayerOwnerChanged;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void InitializeSlots()
|
||||||
|
{
|
||||||
|
// 슬롯 자동 할당 - 이름으로 찾기
|
||||||
|
if (slot1 == null) slot1 = FindSlotByName("Slot_1");
|
||||||
|
if (slot2 == null) slot2 = FindSlotByName("Slot_2");
|
||||||
|
if (slot3 == null) slot3 = FindSlotByName("Slot_3");
|
||||||
|
if (slot4 == null) slot4 = FindSlotByName("Slot_4");
|
||||||
|
|
||||||
|
// 모든 슬롯 초기화 (비어있음)
|
||||||
|
slot1?.Clear();
|
||||||
|
slot2?.Clear();
|
||||||
|
slot3?.Clear();
|
||||||
|
slot4?.Clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 이름으로 슬롯 찾기 (자식의 자식 프리팹까지 검색)
|
||||||
|
/// </summary>
|
||||||
|
private TeamCardSlot FindSlotByName(string slotName)
|
||||||
|
{
|
||||||
|
// 직접 자식에서 찾기
|
||||||
|
Transform slotTransform = transform.Find(slotName);
|
||||||
|
if (slotTransform == null) return null;
|
||||||
|
|
||||||
|
// 자식 프리팹에서 TeamCardSlot 찾기 또는 생성
|
||||||
|
TeamCardSlot slot = slotTransform.GetComponentInChildren<TeamCardSlot>(true);
|
||||||
|
if (slot == null)
|
||||||
|
{
|
||||||
|
// TeamCardSlot 컴포넌트를 자식 프리팹의 루트에 추가
|
||||||
|
// 프리팹 인스턴스의 첫 번째 자식이 실제 카드 프리팹
|
||||||
|
if (slotTransform.childCount > 0)
|
||||||
|
{
|
||||||
|
GameObject cardObj = slotTransform.GetChild(0).gameObject;
|
||||||
|
slot = cardObj.AddComponent<TeamCardSlot>();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// 자식이 없으면 슬롯 자체에 추가
|
||||||
|
slot = slotTransform.gameObject.AddComponent<TeamCardSlot>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return slot;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnClientConnected(ulong clientId)
|
||||||
|
{
|
||||||
|
// 약간의 딜레이 후 플레이어 컨트롤러가 생성될 때까지 대기
|
||||||
|
Invoke(nameof(RefreshAllPlayers), 0.5f);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnClientDisconnect(ulong clientId)
|
||||||
|
{
|
||||||
|
// 플레이어 제거
|
||||||
|
RemovePlayer(clientId);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void RefreshAllPlayers()
|
||||||
|
{
|
||||||
|
// 로컬 플레이어 ID 확인
|
||||||
|
if (NetworkManager.Singleton != null)
|
||||||
|
{
|
||||||
|
_localPlayerId = NetworkManager.Singleton.LocalClientId;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 모든 NetworkPlayerController 찾기
|
||||||
|
var allPlayers = FindObjectsByType<NetworkPlayerController>(FindObjectsSortMode.None);
|
||||||
|
|
||||||
|
// 기존 매핑 클리어
|
||||||
|
_playerControllers.Clear();
|
||||||
|
|
||||||
|
// 플레이어 등록
|
||||||
|
foreach (var player in allPlayers)
|
||||||
|
{
|
||||||
|
ulong playerId = player.OwnerPlayerId;
|
||||||
|
if (playerId != ulong.MaxValue)
|
||||||
|
{
|
||||||
|
_playerControllers[playerId] = player;
|
||||||
|
player.OnOwnerChanged -= OnPlayerOwnerChanged;
|
||||||
|
player.OnOwnerChanged += OnPlayerOwnerChanged;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// UI 업데이트
|
||||||
|
UpdateAllSlots();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnPlayerOwnerChanged(ulong newOwnerId)
|
||||||
|
{
|
||||||
|
// 플레이어 소유자 변경 시 갱신
|
||||||
|
Invoke(nameof(RefreshAllPlayers), 0.1f);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void UpdateAllSlots()
|
||||||
|
{
|
||||||
|
// 기존 매핑 클리어
|
||||||
|
_playerSlotMapping.Clear();
|
||||||
|
slot1?.Clear();
|
||||||
|
slot2?.Clear();
|
||||||
|
slot3?.Clear();
|
||||||
|
slot4?.Clear();
|
||||||
|
|
||||||
|
// 로컬 플레이어를 Slot 1에 배치
|
||||||
|
if (_playerControllers.TryGetValue(_localPlayerId, out var localPlayer))
|
||||||
|
{
|
||||||
|
slot1?.SetPlayer(localPlayer, true);
|
||||||
|
_playerSlotMapping[_localPlayerId] = slot1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 다른 플레이어들을 ID 순으로 Slot 2~4에 배치
|
||||||
|
var otherPlayers = new List<KeyValuePair<ulong, NetworkPlayerController>>();
|
||||||
|
foreach (var kvp in _playerControllers)
|
||||||
|
{
|
||||||
|
if (kvp.Key != _localPlayerId)
|
||||||
|
{
|
||||||
|
otherPlayers.Add(kvp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ID 순으로 정렬
|
||||||
|
otherPlayers.Sort((a, b) => a.Key.CompareTo(b.Key));
|
||||||
|
|
||||||
|
// 슬롯에 배치
|
||||||
|
var slots = new[] { slot2, slot3, slot4 };
|
||||||
|
for (int i = 0; i < otherPlayers.Count && i < slots.Length; i++)
|
||||||
|
{
|
||||||
|
var player = otherPlayers[i];
|
||||||
|
slots[i]?.SetPlayer(player.Value, false);
|
||||||
|
_playerSlotMapping[player.Key] = slots[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void RemovePlayer(ulong playerId)
|
||||||
|
{
|
||||||
|
if (_playerControllers.TryGetValue(playerId, out var player))
|
||||||
|
{
|
||||||
|
player.OnOwnerChanged -= OnPlayerOwnerChanged;
|
||||||
|
_playerControllers.Remove(playerId);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_playerSlotMapping.TryGetValue(playerId, out var slot))
|
||||||
|
{
|
||||||
|
slot?.Clear();
|
||||||
|
_playerSlotMapping.Remove(playerId);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 슬롯 재배치
|
||||||
|
UpdateAllSlots();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 개별 팀 카드 슬롯
|
||||||
|
/// TeamCard_Large 또는 TeamCard_Small 프리팹에 붙여서 사용
|
||||||
|
/// </summary>
|
||||||
|
public class TeamCardSlot : MonoBehaviour
|
||||||
|
{
|
||||||
|
[Header("UI References (자동 할당됨)")]
|
||||||
|
[SerializeField] private TextMeshProUGUI _playerNameText;
|
||||||
|
[SerializeField] private Image _hpBarFill;
|
||||||
|
[SerializeField] private TextMeshProUGUI _hpText;
|
||||||
|
|
||||||
|
private NetworkPlayerController _player;
|
||||||
|
private bool _isLocalPlayer;
|
||||||
|
private int _lastHealth = -1;
|
||||||
|
private int _lastMaxHealth = -1;
|
||||||
|
|
||||||
|
private void Awake()
|
||||||
|
{
|
||||||
|
// 자동으로 UI 요소 찾기
|
||||||
|
FindUIElements();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void FindUIElements()
|
||||||
|
{
|
||||||
|
// PlayerNameText 찾기 - 이름으로 정확히 찾기
|
||||||
|
if (_playerNameText == null)
|
||||||
|
{
|
||||||
|
Transform nameText = FindDeepChild(transform, "PlayerNameText");
|
||||||
|
if (nameText != null)
|
||||||
|
{
|
||||||
|
_playerNameText = nameText.GetComponent<TextMeshProUGUI>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// HPBarFill 찾기
|
||||||
|
if (_hpBarFill == null)
|
||||||
|
{
|
||||||
|
Transform hpFill = FindDeepChild(transform, "HPBarFill");
|
||||||
|
if (hpFill != null)
|
||||||
|
{
|
||||||
|
_hpBarFill = hpFill.GetComponent<Image>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// HPText 찾기
|
||||||
|
if (_hpText == null)
|
||||||
|
{
|
||||||
|
Transform hpText = FindDeepChild(transform, "HPText");
|
||||||
|
if (hpText != null)
|
||||||
|
{
|
||||||
|
_hpText = hpText.GetComponent<TextMeshProUGUI>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 깊이 우선 탐색으로 자식 찾기
|
||||||
|
/// </summary>
|
||||||
|
private Transform FindDeepChild(Transform parent, string name)
|
||||||
|
{
|
||||||
|
// 직접 자식에서 찾기
|
||||||
|
Transform found = parent.Find(name);
|
||||||
|
if (found != null) return found;
|
||||||
|
|
||||||
|
// 재귀적으로 자식의 자식에서 찾기
|
||||||
|
for (int i = 0; i < parent.childCount; i++)
|
||||||
|
{
|
||||||
|
found = FindDeepChild(parent.GetChild(i), name);
|
||||||
|
if (found != null) return found;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetPlayer(NetworkPlayerController player, bool isLocalPlayer)
|
||||||
|
{
|
||||||
|
_player = player;
|
||||||
|
_isLocalPlayer = isLocalPlayer;
|
||||||
|
_lastHealth = -1; // 강제 업데이트를 위해 리셋
|
||||||
|
_lastMaxHealth = -1;
|
||||||
|
|
||||||
|
if (player == null)
|
||||||
|
{
|
||||||
|
Clear();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// UI 요소가 없으면 다시 찾기
|
||||||
|
FindUIElements();
|
||||||
|
|
||||||
|
// 플레이어 이름 설정
|
||||||
|
if (_playerNameText != null)
|
||||||
|
{
|
||||||
|
string playerName = $"Player {player.OwnerPlayerId + 1}";
|
||||||
|
if (isLocalPlayer)
|
||||||
|
{
|
||||||
|
playerName += " (YOU)";
|
||||||
|
}
|
||||||
|
_playerNameText.text = playerName;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 초기 체력 업데이트
|
||||||
|
UpdateHealth();
|
||||||
|
|
||||||
|
// 활성화
|
||||||
|
gameObject.SetActive(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Clear()
|
||||||
|
{
|
||||||
|
_player = null;
|
||||||
|
_lastHealth = -1;
|
||||||
|
_lastMaxHealth = -1;
|
||||||
|
|
||||||
|
if (_playerNameText != null)
|
||||||
|
{
|
||||||
|
_playerNameText.text = "Waiting...";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_hpBarFill != null)
|
||||||
|
{
|
||||||
|
_hpBarFill.fillAmount = 0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_hpText != null)
|
||||||
|
{
|
||||||
|
_hpText.text = "--- / ---";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void LateUpdate()
|
||||||
|
{
|
||||||
|
// 체력 업데이트 (변경 시에만)
|
||||||
|
if (_player != null)
|
||||||
|
{
|
||||||
|
int currentHp = _player.GetCurrentHealth();
|
||||||
|
int maxHp = _player.GetMaxHealth();
|
||||||
|
|
||||||
|
// 체력이나 최대 체력이 변경된 경우에만 UI 업데이트
|
||||||
|
if (currentHp != _lastHealth || maxHp != _lastMaxHealth)
|
||||||
|
{
|
||||||
|
UpdateHealth();
|
||||||
|
_lastHealth = currentHp;
|
||||||
|
_lastMaxHealth = maxHp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void UpdateHealth()
|
||||||
|
{
|
||||||
|
if (_player == null) return;
|
||||||
|
|
||||||
|
int currentHp = _player.GetCurrentHealth();
|
||||||
|
int maxHp = _player.GetMaxHealth();
|
||||||
|
float hpPercent = maxHp > 0 ? (float)currentHp / maxHp : 0f;
|
||||||
|
|
||||||
|
if (_hpBarFill != null)
|
||||||
|
{
|
||||||
|
_hpBarFill.fillAmount = hpPercent;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_hpText != null)
|
||||||
|
{
|
||||||
|
_hpText.text = $"{currentHp} / {maxHp}";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 에디터에서 UI 요소 자동 할당
|
||||||
|
/// </summary>
|
||||||
|
[ContextMenu("Auto Find UI Elements")]
|
||||||
|
private void AutoFindUIElements()
|
||||||
|
{
|
||||||
|
FindUIElements();
|
||||||
|
Debug.Log($"[TeamCardSlot] UI Elements Found - Name: {_playerNameText != null}, HPFill: {_hpBarFill != null}, HPText: {_hpText != null}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
2
Assets/Scripts/UI/TeamHealthUI.cs.meta
Normal file
2
Assets/Scripts/UI/TeamHealthUI.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: b5135790bbd96064aab844c2ba2aaa32
|
||||||
@@ -3,8 +3,16 @@ using UnityEngine;
|
|||||||
|
|
||||||
namespace Northbound
|
namespace Northbound
|
||||||
{
|
{
|
||||||
public class WorkerSpawner : NetworkBehaviour, IInteractable
|
public class WorkerSpawner : NetworkBehaviour, IInteractable, IVisionProvider, ITeamMember
|
||||||
{
|
{
|
||||||
|
[Header("Vision Settings")]
|
||||||
|
[Tooltip("워커 홀이 제공하는 시야 범위")]
|
||||||
|
public float visionRange = 10f;
|
||||||
|
|
||||||
|
[Header("Team")]
|
||||||
|
[Tooltip("건물의 팀")]
|
||||||
|
public TeamType initialTeam = TeamType.Player;
|
||||||
|
|
||||||
[Header("Spawner Settings")]
|
[Header("Spawner Settings")]
|
||||||
public GameObject workerPrefab;
|
public GameObject workerPrefab;
|
||||||
public Transform spawnPoint;
|
public Transform spawnPoint;
|
||||||
@@ -34,11 +42,24 @@ namespace Northbound
|
|||||||
{
|
{
|
||||||
base.OnNetworkSpawn();
|
base.OnNetworkSpawn();
|
||||||
_workerCount.OnValueChanged += OnWorkerCountChanged;
|
_workerCount.OnValueChanged += OnWorkerCountChanged;
|
||||||
|
|
||||||
|
if (IsServer)
|
||||||
|
{
|
||||||
|
// 시야 제공자로 등록
|
||||||
|
FogOfWarSystem.Instance?.RegisterVisionProvider(this);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void OnNetworkDespawn()
|
public override void OnNetworkDespawn()
|
||||||
{
|
{
|
||||||
_workerCount.OnValueChanged -= OnWorkerCountChanged;
|
_workerCount.OnValueChanged -= OnWorkerCountChanged;
|
||||||
|
|
||||||
|
if (IsServer)
|
||||||
|
{
|
||||||
|
// 시야 제공자 등록 해제
|
||||||
|
FogOfWarSystem.Instance?.UnregisterVisionProvider(this);
|
||||||
|
}
|
||||||
|
|
||||||
base.OnNetworkDespawn();
|
base.OnNetworkDespawn();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -244,5 +265,33 @@ namespace Northbound
|
|||||||
$"Worker Spawner\nWorkers: {_workerCount.Value}/{maxWorkers}");
|
$"Worker Spawner\nWorkers: {_workerCount.Value}/{maxWorkers}");
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#region IVisionProvider Implementation
|
||||||
|
|
||||||
|
public ulong GetOwnerId() => 0; // 워커 홀은 모든 플레이어에게 시야 제공
|
||||||
|
|
||||||
|
public float GetVisionRange() => visionRange;
|
||||||
|
|
||||||
|
Transform IVisionProvider.GetTransform() => transform;
|
||||||
|
|
||||||
|
public bool IsActive() => IsSpawned;
|
||||||
|
|
||||||
|
TeamType IVisionProvider.GetTeam() => initialTeam;
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region ITeamMember Implementation
|
||||||
|
|
||||||
|
public TeamType GetTeam() => initialTeam;
|
||||||
|
|
||||||
|
public bool IsDead() => false; // 워커 홀은 파괴되지 않음
|
||||||
|
|
||||||
|
public void SetTeam(TeamType team)
|
||||||
|
{
|
||||||
|
// 워커 홀의 팀은 변경할 수 없음
|
||||||
|
Debug.LogWarning("[WorkerSpawner] 워커 홀의 팀은 변경할 수 없습니다.");
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
8
Assets/UI/TeamCard.meta
Normal file
8
Assets/UI/TeamCard.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 53e466e1ebe8177418ecfddedc4d2888
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/UI/TeamCard/HPBar_green.png
Normal file
BIN
Assets/UI/TeamCard/HPBar_green.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.1 KiB |
143
Assets/UI/TeamCard/HPBar_green.png.meta
Normal file
143
Assets/UI/TeamCard/HPBar_green.png.meta
Normal file
@@ -0,0 +1,143 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 6c97158fbcfbbf242ae9b266c285261e
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable:
|
||||||
|
- first:
|
||||||
|
213: 8957537473066040245
|
||||||
|
second: HPBar_green_0
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 0
|
||||||
|
sRGBTexture: 1
|
||||||
|
linearTexture: 0
|
||||||
|
fadeOut: 0
|
||||||
|
borderMipMap: 0
|
||||||
|
mipMapsPreserveCoverage: 0
|
||||||
|
alphaTestReferenceValue: 0.5
|
||||||
|
mipMapFadeDistanceStart: 1
|
||||||
|
mipMapFadeDistanceEnd: 3
|
||||||
|
bumpmap:
|
||||||
|
convertToNormalMap: 0
|
||||||
|
externalNormalMap: 0
|
||||||
|
heightScale: 0.25
|
||||||
|
normalMapFilter: 0
|
||||||
|
flipGreenChannel: 0
|
||||||
|
isReadable: 0
|
||||||
|
streamingMipmaps: 0
|
||||||
|
streamingMipmapsPriority: 0
|
||||||
|
vTOnly: 0
|
||||||
|
ignoreMipmapLimit: 0
|
||||||
|
grayScaleToAlpha: 0
|
||||||
|
generateCubemap: 6
|
||||||
|
cubemapConvolution: 0
|
||||||
|
seamlessCubemap: 0
|
||||||
|
textureFormat: 1
|
||||||
|
maxTextureSize: 2048
|
||||||
|
textureSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
filterMode: 1
|
||||||
|
aniso: 1
|
||||||
|
mipBias: 0
|
||||||
|
wrapU: 1
|
||||||
|
wrapV: 1
|
||||||
|
wrapW: 1
|
||||||
|
nPOTScale: 0
|
||||||
|
lightmap: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
spriteMode: 2
|
||||||
|
spriteExtrude: 1
|
||||||
|
spriteMeshType: 1
|
||||||
|
alignment: 0
|
||||||
|
spritePivot: {x: 0.5, y: 0.5}
|
||||||
|
spritePixelsToUnits: 100
|
||||||
|
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
spriteGenerateFallbackPhysicsShape: 1
|
||||||
|
alphaUsage: 1
|
||||||
|
alphaIsTransparency: 1
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 8
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
flipbookRows: 1
|
||||||
|
flipbookColumns: 1
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
ignorePngGamma: 0
|
||||||
|
applyGammaDecoding: 0
|
||||||
|
swizzle: 50462976
|
||||||
|
cookieLightType: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 4
|
||||||
|
buildTarget: Standalone
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites:
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: HPBar_green_0
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
width: 41
|
||||||
|
height: 41
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0, y: 0}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
customData:
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: -1
|
||||||
|
bones: []
|
||||||
|
spriteID: 5bbf9586fd09f4c70800000000000000
|
||||||
|
internalID: 8957537473066040245
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
outline: []
|
||||||
|
customData:
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID:
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spriteCustomMetadata:
|
||||||
|
entries: []
|
||||||
|
nameFileIdTable:
|
||||||
|
HPBar_green_0: 8957537473066040245
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
990
Assets/UI/TeamCard/TeamCard_Large.prefab
Normal file
990
Assets/UI/TeamCard/TeamCard_Large.prefab
Normal file
@@ -0,0 +1,990 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1 &900691420667464671
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 3909561321110962711}
|
||||||
|
- component: {fileID: 4562475140131647601}
|
||||||
|
- component: {fileID: 3641503078295860797}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: Background
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &3909561321110962711
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 900691420667464671}
|
||||||
|
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: 1671567835747073886}
|
||||||
|
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: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 450, y: 130}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!222 &4562475140131647601
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 900691420667464671}
|
||||||
|
m_CullTransparentMesh: 1
|
||||||
|
--- !u!114 &3641503078295860797
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 900691420667464671}
|
||||||
|
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.5254902}
|
||||||
|
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!1 &1397827455277597976
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 1909221061409215995}
|
||||||
|
- component: {fileID: 4115447053854238644}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: Row_HP
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &1909221061409215995
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1397827455277597976}
|
||||||
|
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: 3623982467735649376}
|
||||||
|
- {fileID: 6479671700234456601}
|
||||||
|
m_Father: {fileID: 1848615146409787736}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
|
m_AnchorMax: {x: 0, y: 0}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 0, y: 0}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!114 &4115447053854238644
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1397827455277597976}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.LayoutElement
|
||||||
|
m_IgnoreLayout: 0
|
||||||
|
m_MinWidth: -1
|
||||||
|
m_MinHeight: -1
|
||||||
|
m_PreferredWidth: -1
|
||||||
|
m_PreferredHeight: -1
|
||||||
|
m_FlexibleWidth: -1
|
||||||
|
m_FlexibleHeight: -1
|
||||||
|
m_LayoutPriority: 1
|
||||||
|
--- !u!1 &1524661661008175776
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 3623982467735649376}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: HPBarRoot
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &3623982467735649376
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1524661661008175776}
|
||||||
|
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: 4526962547313490101}
|
||||||
|
- {fileID: 6546054952217937965}
|
||||||
|
m_Father: {fileID: 1909221061409215995}
|
||||||
|
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: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 320, y: 40}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!1 &1887481747058627097
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 1671567835747073886}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: TeamCard_Large
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &1671567835747073886
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1887481747058627097}
|
||||||
|
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: 3909561321110962711}
|
||||||
|
- {fileID: 1511118888812183331}
|
||||||
|
- {fileID: 6493168435657054733}
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
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!1 &2263815619202694770
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 8270131593793046794}
|
||||||
|
- component: {fileID: 6874510865284232069}
|
||||||
|
- component: {fileID: 5228251429256210363}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: PlayerNameText
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &8270131593793046794
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2263815619202694770}
|
||||||
|
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: 4715303447718307229}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0.5}
|
||||||
|
m_AnchorMax: {x: 1, y: 0.5}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 0, y: 50}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!222 &6874510865284232069
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2263815619202694770}
|
||||||
|
m_CullTransparentMesh: 1
|
||||||
|
--- !u!114 &5228251429256210363
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2263815619202694770}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: Unity.TextMeshPro::TMPro.TextMeshProUGUI
|
||||||
|
m_Material: {fileID: 0}
|
||||||
|
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_RaycastTarget: 1
|
||||||
|
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
m_Maskable: 1
|
||||||
|
m_OnCullStateChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
m_text: Player 1 (YOU)
|
||||||
|
m_isRightToLeft: 0
|
||||||
|
m_fontAsset: {fileID: 11400000, guid: cac3ad1b064570d46abc7f664d02d23e, type: 2}
|
||||||
|
m_sharedMaterial: {fileID: -8208170789151758778, guid: cac3ad1b064570d46abc7f664d02d23e, type: 2}
|
||||||
|
m_fontSharedMaterials: []
|
||||||
|
m_fontMaterial: {fileID: 0}
|
||||||
|
m_fontMaterials: []
|
||||||
|
m_fontColor32:
|
||||||
|
serializedVersion: 2
|
||||||
|
rgba: 4294967295
|
||||||
|
m_fontColor: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_enableVertexGradient: 0
|
||||||
|
m_colorMode: 3
|
||||||
|
m_fontColorGradient:
|
||||||
|
topLeft: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
topRight: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
bottomRight: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_fontColorGradientPreset: {fileID: 0}
|
||||||
|
m_spriteAsset: {fileID: 0}
|
||||||
|
m_tintAllSprites: 0
|
||||||
|
m_StyleSheet: {fileID: 0}
|
||||||
|
m_TextStyleHashCode: -1183493901
|
||||||
|
m_overrideHtmlColors: 0
|
||||||
|
m_faceColor:
|
||||||
|
serializedVersion: 2
|
||||||
|
rgba: 4294967295
|
||||||
|
m_fontSize: 36
|
||||||
|
m_fontSizeBase: 36
|
||||||
|
m_fontWeight: 400
|
||||||
|
m_enableAutoSizing: 0
|
||||||
|
m_fontSizeMin: 18
|
||||||
|
m_fontSizeMax: 72
|
||||||
|
m_fontStyle: 0
|
||||||
|
m_HorizontalAlignment: 1
|
||||||
|
m_VerticalAlignment: 512
|
||||||
|
m_textAlignment: 65535
|
||||||
|
m_characterSpacing: 0
|
||||||
|
m_characterHorizontalScale: 1
|
||||||
|
m_wordSpacing: 0
|
||||||
|
m_lineSpacing: 0
|
||||||
|
m_lineSpacingMax: 0
|
||||||
|
m_paragraphSpacing: 0
|
||||||
|
m_charWidthMaxAdj: 0
|
||||||
|
m_TextWrappingMode: 1
|
||||||
|
m_wordWrappingRatios: 0.4
|
||||||
|
m_overflowMode: 0
|
||||||
|
m_linkedTextComponent: {fileID: 0}
|
||||||
|
parentLinkedComponent: {fileID: 0}
|
||||||
|
m_enableKerning: 0
|
||||||
|
m_ActiveFontFeatures: 6e72656b
|
||||||
|
m_enableExtraPadding: 0
|
||||||
|
checkPaddingRequired: 0
|
||||||
|
m_isRichText: 1
|
||||||
|
m_EmojiFallbackSupport: 1
|
||||||
|
m_parseCtrlCharacters: 1
|
||||||
|
m_isOrthographic: 1
|
||||||
|
m_isCullingEnabled: 0
|
||||||
|
m_horizontalMapping: 0
|
||||||
|
m_verticalMapping: 0
|
||||||
|
m_uvLineOffset: 0
|
||||||
|
m_geometrySortingOrder: 0
|
||||||
|
m_IsTextObjectScaleStatic: 0
|
||||||
|
m_VertexBufferAutoSizeReduction: 0
|
||||||
|
m_useMaxVisibleDescender: 1
|
||||||
|
m_pageToDisplay: 1
|
||||||
|
m_margin: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
m_isUsingLegacyAnimationComponent: 0
|
||||||
|
m_isVolumetricText: 0
|
||||||
|
m_hasFontAssetChanged: 0
|
||||||
|
m_baseMaterial: {fileID: 0}
|
||||||
|
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
--- !u!1 &2332988383367038871
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 1511118888812183331}
|
||||||
|
- component: {fileID: 2760543776975673489}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: Content
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &1511118888812183331
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2332988383367038871}
|
||||||
|
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: 2795229366996019796}
|
||||||
|
- {fileID: 1848615146409787736}
|
||||||
|
m_Father: {fileID: 1671567835747073886}
|
||||||
|
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: 30, y: 0}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!114 &2760543776975673489
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2332988383367038871}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.HorizontalLayoutGroup
|
||||||
|
m_Padding:
|
||||||
|
m_Left: 10
|
||||||
|
m_Right: 10
|
||||||
|
m_Top: 10
|
||||||
|
m_Bottom: 10
|
||||||
|
m_ChildAlignment: 3
|
||||||
|
m_Spacing: 10
|
||||||
|
m_ChildForceExpandWidth: 0
|
||||||
|
m_ChildForceExpandHeight: 0
|
||||||
|
m_ChildControlWidth: 1
|
||||||
|
m_ChildControlHeight: 1
|
||||||
|
m_ChildScaleWidth: 0
|
||||||
|
m_ChildScaleHeight: 0
|
||||||
|
m_ReverseArrangement: 0
|
||||||
|
--- !u!1 &4445285748216119847
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 2795229366996019796}
|
||||||
|
- component: {fileID: 1593405979637777621}
|
||||||
|
- component: {fileID: 2612123753227482464}
|
||||||
|
- component: {fileID: 8985400032926287030}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: PortraitFrame
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &2795229366996019796
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 4445285748216119847}
|
||||||
|
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: 1511118888812183331}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
|
m_AnchorMax: {x: 0, y: 0}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 0, y: 0}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!222 &1593405979637777621
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 4445285748216119847}
|
||||||
|
m_CullTransparentMesh: 1
|
||||||
|
--- !u!114 &2612123753227482464
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 4445285748216119847}
|
||||||
|
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: 1, g: 1, b: 1, a: 1}
|
||||||
|
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: 10905, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_Type: 1
|
||||||
|
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!114 &8985400032926287030
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 4445285748216119847}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.LayoutElement
|
||||||
|
m_IgnoreLayout: 0
|
||||||
|
m_MinWidth: 100
|
||||||
|
m_MinHeight: 100
|
||||||
|
m_PreferredWidth: 100
|
||||||
|
m_PreferredHeight: 100
|
||||||
|
m_FlexibleWidth: -1
|
||||||
|
m_FlexibleHeight: -1
|
||||||
|
m_LayoutPriority: 1
|
||||||
|
--- !u!1 &4855823295685342202
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 4715303447718307229}
|
||||||
|
- component: {fileID: 1772785610992859156}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: Row_Name
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &4715303447718307229
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 4855823295685342202}
|
||||||
|
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: 8270131593793046794}
|
||||||
|
m_Father: {fileID: 1848615146409787736}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
|
m_AnchorMax: {x: 0, y: 0}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 0, y: 0}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!114 &1772785610992859156
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 4855823295685342202}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.LayoutElement
|
||||||
|
m_IgnoreLayout: 0
|
||||||
|
m_MinWidth: 320
|
||||||
|
m_MinHeight: 50
|
||||||
|
m_PreferredWidth: 320
|
||||||
|
m_PreferredHeight: 50
|
||||||
|
m_FlexibleWidth: -1
|
||||||
|
m_FlexibleHeight: -1
|
||||||
|
m_LayoutPriority: 1
|
||||||
|
--- !u!1 &5635920112903963799
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 6546054952217937965}
|
||||||
|
- component: {fileID: 1411402556195867580}
|
||||||
|
- component: {fileID: 392033387581393578}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: HPBarFill
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &6546054952217937965
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 5635920112903963799}
|
||||||
|
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: 3623982467735649376}
|
||||||
|
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: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 320, y: 40}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!222 &1411402556195867580
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 5635920112903963799}
|
||||||
|
m_CullTransparentMesh: 1
|
||||||
|
--- !u!114 &392033387581393578
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 5635920112903963799}
|
||||||
|
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: 1, g: 1, b: 1, a: 1}
|
||||||
|
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: 8957537473066040245, guid: 6c97158fbcfbbf242ae9b266c285261e, type: 3}
|
||||||
|
m_Type: 3
|
||||||
|
m_PreserveAspect: 0
|
||||||
|
m_FillCenter: 1
|
||||||
|
m_FillMethod: 0
|
||||||
|
m_FillAmount: 1
|
||||||
|
m_FillClockwise: 1
|
||||||
|
m_FillOrigin: 0
|
||||||
|
m_UseSpriteMesh: 0
|
||||||
|
m_PixelsPerUnitMultiplier: 1
|
||||||
|
--- !u!1 &6318370184295727766
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 6479671700234456601}
|
||||||
|
- component: {fileID: 919834822258377369}
|
||||||
|
- component: {fileID: 157813252385139848}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: HPText
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &6479671700234456601
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 6318370184295727766}
|
||||||
|
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: 1909221061409215995}
|
||||||
|
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: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 320, y: 40}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!222 &919834822258377369
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 6318370184295727766}
|
||||||
|
m_CullTransparentMesh: 1
|
||||||
|
--- !u!114 &157813252385139848
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 6318370184295727766}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: Unity.TextMeshPro::TMPro.TextMeshProUGUI
|
||||||
|
m_Material: {fileID: 0}
|
||||||
|
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_RaycastTarget: 1
|
||||||
|
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
m_Maskable: 1
|
||||||
|
m_OnCullStateChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
m_text: 100 / 100
|
||||||
|
m_isRightToLeft: 0
|
||||||
|
m_fontAsset: {fileID: 11400000, guid: 72491e21fef70124c9ebc25ff62fd3e9, type: 2}
|
||||||
|
m_sharedMaterial: {fileID: 9147849279665769802, guid: 72491e21fef70124c9ebc25ff62fd3e9, type: 2}
|
||||||
|
m_fontSharedMaterials: []
|
||||||
|
m_fontMaterial: {fileID: 0}
|
||||||
|
m_fontMaterials: []
|
||||||
|
m_fontColor32:
|
||||||
|
serializedVersion: 2
|
||||||
|
rgba: 4294967295
|
||||||
|
m_fontColor: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_enableVertexGradient: 0
|
||||||
|
m_colorMode: 3
|
||||||
|
m_fontColorGradient:
|
||||||
|
topLeft: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
topRight: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
bottomRight: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_fontColorGradientPreset: {fileID: 0}
|
||||||
|
m_spriteAsset: {fileID: 0}
|
||||||
|
m_tintAllSprites: 0
|
||||||
|
m_StyleSheet: {fileID: 0}
|
||||||
|
m_TextStyleHashCode: -1183493901
|
||||||
|
m_overrideHtmlColors: 0
|
||||||
|
m_faceColor:
|
||||||
|
serializedVersion: 2
|
||||||
|
rgba: 4294967295
|
||||||
|
m_fontSize: 32
|
||||||
|
m_fontSizeBase: 32
|
||||||
|
m_fontWeight: 400
|
||||||
|
m_enableAutoSizing: 0
|
||||||
|
m_fontSizeMin: 18
|
||||||
|
m_fontSizeMax: 72
|
||||||
|
m_fontStyle: 0
|
||||||
|
m_HorizontalAlignment: 2
|
||||||
|
m_VerticalAlignment: 256
|
||||||
|
m_textAlignment: 65535
|
||||||
|
m_characterSpacing: 0
|
||||||
|
m_characterHorizontalScale: 1
|
||||||
|
m_wordSpacing: 0
|
||||||
|
m_lineSpacing: 0
|
||||||
|
m_lineSpacingMax: 0
|
||||||
|
m_paragraphSpacing: 0
|
||||||
|
m_charWidthMaxAdj: 0
|
||||||
|
m_TextWrappingMode: 1
|
||||||
|
m_wordWrappingRatios: 0.4
|
||||||
|
m_overflowMode: 0
|
||||||
|
m_linkedTextComponent: {fileID: 0}
|
||||||
|
parentLinkedComponent: {fileID: 0}
|
||||||
|
m_enableKerning: 0
|
||||||
|
m_ActiveFontFeatures: 6e72656b
|
||||||
|
m_enableExtraPadding: 0
|
||||||
|
checkPaddingRequired: 0
|
||||||
|
m_isRichText: 1
|
||||||
|
m_EmojiFallbackSupport: 1
|
||||||
|
m_parseCtrlCharacters: 1
|
||||||
|
m_isOrthographic: 1
|
||||||
|
m_isCullingEnabled: 0
|
||||||
|
m_horizontalMapping: 0
|
||||||
|
m_verticalMapping: 0
|
||||||
|
m_uvLineOffset: 0
|
||||||
|
m_geometrySortingOrder: 0
|
||||||
|
m_IsTextObjectScaleStatic: 0
|
||||||
|
m_VertexBufferAutoSizeReduction: 0
|
||||||
|
m_useMaxVisibleDescender: 1
|
||||||
|
m_pageToDisplay: 1
|
||||||
|
m_margin: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
m_isUsingLegacyAnimationComponent: 0
|
||||||
|
m_isVolumetricText: 0
|
||||||
|
m_hasFontAssetChanged: 0
|
||||||
|
m_baseMaterial: {fileID: 0}
|
||||||
|
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
--- !u!1 &6360479704059743584
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 1848615146409787736}
|
||||||
|
- component: {fileID: 1704105055393465885}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: InfoGroup
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &1848615146409787736
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 6360479704059743584}
|
||||||
|
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: 4715303447718307229}
|
||||||
|
- {fileID: 1909221061409215995}
|
||||||
|
m_Father: {fileID: 1511118888812183331}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
|
m_AnchorMax: {x: 0, y: 0}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 0, y: 0}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!114 &1704105055393465885
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 6360479704059743584}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.VerticalLayoutGroup
|
||||||
|
m_Padding:
|
||||||
|
m_Left: 0
|
||||||
|
m_Right: 0
|
||||||
|
m_Top: 10
|
||||||
|
m_Bottom: 40
|
||||||
|
m_ChildAlignment: 3
|
||||||
|
m_Spacing: 20
|
||||||
|
m_ChildForceExpandWidth: 1
|
||||||
|
m_ChildForceExpandHeight: 0
|
||||||
|
m_ChildControlWidth: 1
|
||||||
|
m_ChildControlHeight: 1
|
||||||
|
m_ChildScaleWidth: 0
|
||||||
|
m_ChildScaleHeight: 0
|
||||||
|
m_ReverseArrangement: 0
|
||||||
|
--- !u!1 &6711787659623841782
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 4526962547313490101}
|
||||||
|
- component: {fileID: 4986890417745144886}
|
||||||
|
- component: {fileID: 7857089966618426166}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: HPBarBG
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &4526962547313490101
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 6711787659623841782}
|
||||||
|
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: 3623982467735649376}
|
||||||
|
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: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 320, y: 40}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!222 &4986890417745144886
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 6711787659623841782}
|
||||||
|
m_CullTransparentMesh: 1
|
||||||
|
--- !u!114 &7857089966618426166
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 6711787659623841782}
|
||||||
|
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: 1}
|
||||||
|
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!1 &8992019966963279634
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 6493168435657054733}
|
||||||
|
- component: {fileID: 1615791677248318544}
|
||||||
|
- component: {fileID: 89451014552905569}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: StatusScreen
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &6493168435657054733
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 8992019966963279634}
|
||||||
|
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: 1671567835747073886}
|
||||||
|
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: 30, y: 30}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!222 &1615791677248318544
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 8992019966963279634}
|
||||||
|
m_CullTransparentMesh: 1
|
||||||
|
--- !u!114 &89451014552905569
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 8992019966963279634}
|
||||||
|
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.003921569, g: 0.003921569, b: 0.003921569, a: 0}
|
||||||
|
m_RaycastTarget: 0
|
||||||
|
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
|
||||||
7
Assets/UI/TeamCard/TeamCard_Large.prefab.meta
Normal file
7
Assets/UI/TeamCard/TeamCard_Large.prefab.meta
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 685f476a561713e42889dcfd23465842
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
969
Assets/UI/TeamCard/TeamCard_Small.prefab
Normal file
969
Assets/UI/TeamCard/TeamCard_Small.prefab
Normal file
@@ -0,0 +1,969 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1 &2074171136745008206
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 5198198148521458082}
|
||||||
|
- component: {fileID: 1826486670657657610}
|
||||||
|
- component: {fileID: 8273750792848853139}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: HPBarFill
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &5198198148521458082
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2074171136745008206}
|
||||||
|
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: 3702526597436997994}
|
||||||
|
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: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 260, y: 30}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!222 &1826486670657657610
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2074171136745008206}
|
||||||
|
m_CullTransparentMesh: 1
|
||||||
|
--- !u!114 &8273750792848853139
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2074171136745008206}
|
||||||
|
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: 1, g: 1, b: 1, a: 1}
|
||||||
|
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: 8957537473066040245, guid: 6c97158fbcfbbf242ae9b266c285261e, type: 3}
|
||||||
|
m_Type: 3
|
||||||
|
m_PreserveAspect: 0
|
||||||
|
m_FillCenter: 1
|
||||||
|
m_FillMethod: 0
|
||||||
|
m_FillAmount: 1
|
||||||
|
m_FillClockwise: 1
|
||||||
|
m_FillOrigin: 0
|
||||||
|
m_UseSpriteMesh: 0
|
||||||
|
m_PixelsPerUnitMultiplier: 1
|
||||||
|
--- !u!1 &2253511433390990024
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 1284898007502304109}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: TeamCard_Small
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &1284898007502304109
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2253511433390990024}
|
||||||
|
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: 7560997970798250675}
|
||||||
|
- {fileID: 8503868087006291890}
|
||||||
|
- {fileID: 4561880499055873524}
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
|
m_AnchorMax: {x: 1, y: 1}
|
||||||
|
m_AnchoredPosition: {x: -15, y: 0}
|
||||||
|
m_SizeDelta: {x: 30, y: 0}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!1 &2900382378627822061
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 4561880499055873524}
|
||||||
|
- component: {fileID: 8627558946663358117}
|
||||||
|
- component: {fileID: 8207203923599803865}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: StatusScreen
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &4561880499055873524
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2900382378627822061}
|
||||||
|
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: 1284898007502304109}
|
||||||
|
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 &8627558946663358117
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2900382378627822061}
|
||||||
|
m_CullTransparentMesh: 1
|
||||||
|
--- !u!114 &8207203923599803865
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2900382378627822061}
|
||||||
|
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.003921569, g: 0.003921569, b: 0.003921569, a: 0.95686275}
|
||||||
|
m_RaycastTarget: 0
|
||||||
|
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!1 &2968470668028046660
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 5917359228874704445}
|
||||||
|
- component: {fileID: 5042915766726483101}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: InfoGroup
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &5917359228874704445
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2968470668028046660}
|
||||||
|
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: 194619546641387405}
|
||||||
|
- {fileID: 291540299496549388}
|
||||||
|
m_Father: {fileID: 8503868087006291890}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
|
m_AnchorMax: {x: 0, y: 0}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 250, y: 80}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!114 &5042915766726483101
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2968470668028046660}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.VerticalLayoutGroup
|
||||||
|
m_Padding:
|
||||||
|
m_Left: 0
|
||||||
|
m_Right: 0
|
||||||
|
m_Top: 0
|
||||||
|
m_Bottom: 20
|
||||||
|
m_ChildAlignment: 3
|
||||||
|
m_Spacing: 10
|
||||||
|
m_ChildForceExpandWidth: 1
|
||||||
|
m_ChildForceExpandHeight: 0
|
||||||
|
m_ChildControlWidth: 1
|
||||||
|
m_ChildControlHeight: 1
|
||||||
|
m_ChildScaleWidth: 0
|
||||||
|
m_ChildScaleHeight: 0
|
||||||
|
m_ReverseArrangement: 0
|
||||||
|
--- !u!1 &3640157395410386983
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 7560997970798250675}
|
||||||
|
- component: {fileID: 2705099275371687515}
|
||||||
|
- component: {fileID: 8518698171192333884}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: Background
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &7560997970798250675
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3640157395410386983}
|
||||||
|
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: 1284898007502304109}
|
||||||
|
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: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 370, y: 90}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!222 &2705099275371687515
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3640157395410386983}
|
||||||
|
m_CullTransparentMesh: 1
|
||||||
|
--- !u!114 &8518698171192333884
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3640157395410386983}
|
||||||
|
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.5254902}
|
||||||
|
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!1 &4102094337288095666
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 291540299496549388}
|
||||||
|
- component: {fileID: 4720487827404151422}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: Row_HP
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &291540299496549388
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 4102094337288095666}
|
||||||
|
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: 3702526597436997994}
|
||||||
|
- {fileID: 6245799478517062558}
|
||||||
|
m_Father: {fileID: 5917359228874704445}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
|
m_AnchorMax: {x: 0, y: 0}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 0, y: 0}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!114 &4720487827404151422
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 4102094337288095666}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.LayoutElement
|
||||||
|
m_IgnoreLayout: 0
|
||||||
|
m_MinWidth: -1
|
||||||
|
m_MinHeight: -1
|
||||||
|
m_PreferredWidth: -1
|
||||||
|
m_PreferredHeight: -1
|
||||||
|
m_FlexibleWidth: -1
|
||||||
|
m_FlexibleHeight: -1
|
||||||
|
m_LayoutPriority: 1
|
||||||
|
--- !u!1 &4343589651227387619
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 8503868087006291890}
|
||||||
|
- component: {fileID: 4482117481812084865}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: Content
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &8503868087006291890
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 4343589651227387619}
|
||||||
|
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: 2205644490763987176}
|
||||||
|
- {fileID: 5917359228874704445}
|
||||||
|
m_Father: {fileID: 1284898007502304109}
|
||||||
|
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: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 370, y: 90}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!114 &4482117481812084865
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 4343589651227387619}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.HorizontalLayoutGroup
|
||||||
|
m_Padding:
|
||||||
|
m_Left: 10
|
||||||
|
m_Right: 10
|
||||||
|
m_Top: 10
|
||||||
|
m_Bottom: 10
|
||||||
|
m_ChildAlignment: 3
|
||||||
|
m_Spacing: 10
|
||||||
|
m_ChildForceExpandWidth: 0
|
||||||
|
m_ChildForceExpandHeight: 0
|
||||||
|
m_ChildControlWidth: 0
|
||||||
|
m_ChildControlHeight: 0
|
||||||
|
m_ChildScaleWidth: 0
|
||||||
|
m_ChildScaleHeight: 0
|
||||||
|
m_ReverseArrangement: 0
|
||||||
|
--- !u!1 &5793376694639013665
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 2205644490763987176}
|
||||||
|
- component: {fileID: 1577489590812274390}
|
||||||
|
- component: {fileID: 4030882051384975456}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: PortraitFrame
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &2205644490763987176
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 5793376694639013665}
|
||||||
|
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: 8503868087006291890}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
|
m_AnchorMax: {x: 0, y: 0}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 80, y: 80}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!222 &1577489590812274390
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 5793376694639013665}
|
||||||
|
m_CullTransparentMesh: 1
|
||||||
|
--- !u!114 &4030882051384975456
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 5793376694639013665}
|
||||||
|
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: 1, g: 1, b: 1, a: 1}
|
||||||
|
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: 10905, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_Type: 1
|
||||||
|
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!1 &6414600283166031257
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 6245799478517062558}
|
||||||
|
- component: {fileID: 5135884166251837940}
|
||||||
|
- component: {fileID: 1343573155229754827}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: HPText
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &6245799478517062558
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 6414600283166031257}
|
||||||
|
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: 291540299496549388}
|
||||||
|
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: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 250, y: 40}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!222 &5135884166251837940
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 6414600283166031257}
|
||||||
|
m_CullTransparentMesh: 1
|
||||||
|
--- !u!114 &1343573155229754827
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 6414600283166031257}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: Unity.TextMeshPro::TMPro.TextMeshProUGUI
|
||||||
|
m_Material: {fileID: 0}
|
||||||
|
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_RaycastTarget: 1
|
||||||
|
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
m_Maskable: 1
|
||||||
|
m_OnCullStateChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
m_text: 100 / 100
|
||||||
|
m_isRightToLeft: 0
|
||||||
|
m_fontAsset: {fileID: 11400000, guid: 72491e21fef70124c9ebc25ff62fd3e9, type: 2}
|
||||||
|
m_sharedMaterial: {fileID: 9147849279665769802, guid: 72491e21fef70124c9ebc25ff62fd3e9, type: 2}
|
||||||
|
m_fontSharedMaterials: []
|
||||||
|
m_fontMaterial: {fileID: 0}
|
||||||
|
m_fontMaterials: []
|
||||||
|
m_fontColor32:
|
||||||
|
serializedVersion: 2
|
||||||
|
rgba: 4294967295
|
||||||
|
m_fontColor: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_enableVertexGradient: 0
|
||||||
|
m_colorMode: 3
|
||||||
|
m_fontColorGradient:
|
||||||
|
topLeft: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
topRight: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
bottomRight: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_fontColorGradientPreset: {fileID: 0}
|
||||||
|
m_spriteAsset: {fileID: 0}
|
||||||
|
m_tintAllSprites: 0
|
||||||
|
m_StyleSheet: {fileID: 0}
|
||||||
|
m_TextStyleHashCode: -1183493901
|
||||||
|
m_overrideHtmlColors: 0
|
||||||
|
m_faceColor:
|
||||||
|
serializedVersion: 2
|
||||||
|
rgba: 4294967295
|
||||||
|
m_fontSize: 28
|
||||||
|
m_fontSizeBase: 28
|
||||||
|
m_fontWeight: 400
|
||||||
|
m_enableAutoSizing: 0
|
||||||
|
m_fontSizeMin: 18
|
||||||
|
m_fontSizeMax: 72
|
||||||
|
m_fontStyle: 0
|
||||||
|
m_HorizontalAlignment: 2
|
||||||
|
m_VerticalAlignment: 256
|
||||||
|
m_textAlignment: 65535
|
||||||
|
m_characterSpacing: 0
|
||||||
|
m_characterHorizontalScale: 1
|
||||||
|
m_wordSpacing: 0
|
||||||
|
m_lineSpacing: 0
|
||||||
|
m_lineSpacingMax: 0
|
||||||
|
m_paragraphSpacing: 0
|
||||||
|
m_charWidthMaxAdj: 0
|
||||||
|
m_TextWrappingMode: 1
|
||||||
|
m_wordWrappingRatios: 0.4
|
||||||
|
m_overflowMode: 0
|
||||||
|
m_linkedTextComponent: {fileID: 0}
|
||||||
|
parentLinkedComponent: {fileID: 0}
|
||||||
|
m_enableKerning: 0
|
||||||
|
m_ActiveFontFeatures: 6e72656b
|
||||||
|
m_enableExtraPadding: 0
|
||||||
|
checkPaddingRequired: 0
|
||||||
|
m_isRichText: 1
|
||||||
|
m_EmojiFallbackSupport: 1
|
||||||
|
m_parseCtrlCharacters: 1
|
||||||
|
m_isOrthographic: 1
|
||||||
|
m_isCullingEnabled: 0
|
||||||
|
m_horizontalMapping: 0
|
||||||
|
m_verticalMapping: 0
|
||||||
|
m_uvLineOffset: 0
|
||||||
|
m_geometrySortingOrder: 0
|
||||||
|
m_IsTextObjectScaleStatic: 0
|
||||||
|
m_VertexBufferAutoSizeReduction: 0
|
||||||
|
m_useMaxVisibleDescender: 1
|
||||||
|
m_pageToDisplay: 1
|
||||||
|
m_margin: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
m_isUsingLegacyAnimationComponent: 0
|
||||||
|
m_isVolumetricText: 0
|
||||||
|
m_hasFontAssetChanged: 0
|
||||||
|
m_baseMaterial: {fileID: 0}
|
||||||
|
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
--- !u!1 &7834539181679316471
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 3702526597436997994}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: HPBarRoot
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &3702526597436997994
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7834539181679316471}
|
||||||
|
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: 3802551536411645914}
|
||||||
|
- {fileID: 5198198148521458082}
|
||||||
|
m_Father: {fileID: 291540299496549388}
|
||||||
|
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: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 260, y: 30}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!1 &8164887723793364555
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 3802551536411645914}
|
||||||
|
- component: {fileID: 3656180201220190327}
|
||||||
|
- component: {fileID: 1104169946164349632}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: HPBarBG
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &3802551536411645914
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 8164887723793364555}
|
||||||
|
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: 3702526597436997994}
|
||||||
|
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: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 260, y: 30}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!222 &3656180201220190327
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 8164887723793364555}
|
||||||
|
m_CullTransparentMesh: 1
|
||||||
|
--- !u!114 &1104169946164349632
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 8164887723793364555}
|
||||||
|
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: 1}
|
||||||
|
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!1 &8988597135719243260
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 194619546641387405}
|
||||||
|
- component: {fileID: 6633126197091541793}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: Row_Name
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &194619546641387405
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 8988597135719243260}
|
||||||
|
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: 4888232951558913288}
|
||||||
|
m_Father: {fileID: 5917359228874704445}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
|
m_AnchorMax: {x: 0, y: 0}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 0, y: 0}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!114 &6633126197091541793
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 8988597135719243260}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.LayoutElement
|
||||||
|
m_IgnoreLayout: 0
|
||||||
|
m_MinWidth: 320
|
||||||
|
m_MinHeight: 50
|
||||||
|
m_PreferredWidth: 320
|
||||||
|
m_PreferredHeight: 50
|
||||||
|
m_FlexibleWidth: -1
|
||||||
|
m_FlexibleHeight: -1
|
||||||
|
m_LayoutPriority: 1
|
||||||
|
--- !u!1 &9132062344038458924
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 4888232951558913288}
|
||||||
|
- component: {fileID: 6038280827777648504}
|
||||||
|
- component: {fileID: 4716558580110790481}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: PlayerNameText
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &4888232951558913288
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 9132062344038458924}
|
||||||
|
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: 194619546641387405}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0.5}
|
||||||
|
m_AnchorMax: {x: 1, y: 0.5}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 0, y: 50}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!222 &6038280827777648504
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 9132062344038458924}
|
||||||
|
m_CullTransparentMesh: 1
|
||||||
|
--- !u!114 &4716558580110790481
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 9132062344038458924}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: Unity.TextMeshPro::TMPro.TextMeshProUGUI
|
||||||
|
m_Material: {fileID: 0}
|
||||||
|
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_RaycastTarget: 1
|
||||||
|
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
m_Maskable: 1
|
||||||
|
m_OnCullStateChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
m_text: Player 4
|
||||||
|
m_isRightToLeft: 0
|
||||||
|
m_fontAsset: {fileID: 11400000, guid: cac3ad1b064570d46abc7f664d02d23e, type: 2}
|
||||||
|
m_sharedMaterial: {fileID: -8208170789151758778, guid: cac3ad1b064570d46abc7f664d02d23e, type: 2}
|
||||||
|
m_fontSharedMaterials: []
|
||||||
|
m_fontMaterial: {fileID: 0}
|
||||||
|
m_fontMaterials: []
|
||||||
|
m_fontColor32:
|
||||||
|
serializedVersion: 2
|
||||||
|
rgba: 4294967295
|
||||||
|
m_fontColor: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_enableVertexGradient: 0
|
||||||
|
m_colorMode: 3
|
||||||
|
m_fontColorGradient:
|
||||||
|
topLeft: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
topRight: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
bottomRight: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_fontColorGradientPreset: {fileID: 0}
|
||||||
|
m_spriteAsset: {fileID: 0}
|
||||||
|
m_tintAllSprites: 0
|
||||||
|
m_StyleSheet: {fileID: 0}
|
||||||
|
m_TextStyleHashCode: -1183493901
|
||||||
|
m_overrideHtmlColors: 0
|
||||||
|
m_faceColor:
|
||||||
|
serializedVersion: 2
|
||||||
|
rgba: 4294967295
|
||||||
|
m_fontSize: 32
|
||||||
|
m_fontSizeBase: 32
|
||||||
|
m_fontWeight: 400
|
||||||
|
m_enableAutoSizing: 0
|
||||||
|
m_fontSizeMin: 18
|
||||||
|
m_fontSizeMax: 72
|
||||||
|
m_fontStyle: 0
|
||||||
|
m_HorizontalAlignment: 1
|
||||||
|
m_VerticalAlignment: 512
|
||||||
|
m_textAlignment: 65535
|
||||||
|
m_characterSpacing: 0
|
||||||
|
m_characterHorizontalScale: 1
|
||||||
|
m_wordSpacing: 0
|
||||||
|
m_lineSpacing: 0
|
||||||
|
m_lineSpacingMax: 0
|
||||||
|
m_paragraphSpacing: 0
|
||||||
|
m_charWidthMaxAdj: 0
|
||||||
|
m_TextWrappingMode: 1
|
||||||
|
m_wordWrappingRatios: 0.4
|
||||||
|
m_overflowMode: 0
|
||||||
|
m_linkedTextComponent: {fileID: 0}
|
||||||
|
parentLinkedComponent: {fileID: 0}
|
||||||
|
m_enableKerning: 0
|
||||||
|
m_ActiveFontFeatures: 6e72656b
|
||||||
|
m_enableExtraPadding: 0
|
||||||
|
checkPaddingRequired: 0
|
||||||
|
m_isRichText: 1
|
||||||
|
m_EmojiFallbackSupport: 1
|
||||||
|
m_parseCtrlCharacters: 1
|
||||||
|
m_isOrthographic: 1
|
||||||
|
m_isCullingEnabled: 0
|
||||||
|
m_horizontalMapping: 0
|
||||||
|
m_verticalMapping: 0
|
||||||
|
m_uvLineOffset: 0
|
||||||
|
m_geometrySortingOrder: 0
|
||||||
|
m_IsTextObjectScaleStatic: 0
|
||||||
|
m_VertexBufferAutoSizeReduction: 0
|
||||||
|
m_useMaxVisibleDescender: 1
|
||||||
|
m_pageToDisplay: 1
|
||||||
|
m_margin: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
m_isUsingLegacyAnimationComponent: 0
|
||||||
|
m_isVolumetricText: 0
|
||||||
|
m_hasFontAssetChanged: 0
|
||||||
|
m_baseMaterial: {fileID: 0}
|
||||||
|
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
|
||||||
7
Assets/UI/TeamCard/TeamCard_Small.prefab.meta
Normal file
7
Assets/UI/TeamCard/TeamCard_Small.prefab.meta
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 76993c29348a34e48bf805ce324efb62
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -1,3 +1,3 @@
|
|||||||
id,memo,move_speed,max_hp,sight,atk_range,atk_damage,atk_interval_sec,cost,weight,model_path,animation_controller_path
|
id,memo,move_speed,max_hp,sight,atk_range,atk_damage,atk_interval_sec,cost,weight,model_path,animation_controller_path
|
||||||
1,기본1,5,75,6,1,10,2,2,1,Assets/Models/PlantWarrior.fbx,Assets/Animations/MonsterAnimationController.controller
|
1,기본1,4,75,6,1,10,2,2,1,Assets/Models/PlantWarrior_With_Spear.fbx,Assets/Animations/MonsterAnimationController.controller
|
||||||
2,기본2,4.5,100,6,4,15,4,5,0.5,Assets/Models/Rogue.fbx,Assets/Animations/MonsterAnimationController.controller
|
2,기본2,3.5,50,6,4,15,4,5,0.5,Assets/Models/Rogue.fbx,Assets/Animations/MonsterAnimationController.controller
|
||||||
|
|||||||
|
@@ -1,6 +1,6 @@
|
|||||||
id,memo,move_speed,max_hp,sight,atk_range,atk_damage,atk_interval_sec,cost,weight,model_path,animation_controller_path,wave_min,wave_max
|
id,memo,move_speed,max_hp,sight,atk_range,atk_damage,atk_interval_sec,cost,weight,model_path,animation_controller_path,wave_min,wave_max
|
||||||
101,Grunt(기본),6.7,75,6,1,3,1.2,3,1.0,Assets/Models/Skeleton_Minion.fbx,Assets/Animations/MonsterAnimationController.controller,1,10
|
101,Grunt(기본),4.5,75,6,1,3,1.2,3,1,Assets/Models/Skeleton_Minion_With_Sword.fbx,Assets/Animations/MonsterAnimationController.controller,1,10
|
||||||
102,Tank(느림/단단),3.3,125,6,1,4,1.5,5,0.5,Assets/Models/Druid.fbx,Assets/Animations/MonsterAnimationController.controller,3,15
|
102,Tank(느림/단단),2.5,125,6,1,4,1.5,5,0.5,Assets/Models/Druid.fbx,Assets/Animations/MonsterAnimationController.controller,3,15
|
||||||
103,Ranged(원거리/약함),5.3,65,6,5,2,1.4,3,0.2,Assets/Models/Skeleton_Warrior.fbx,Assets/Animations/MonsterAnimationController.controller,3,20
|
103,Ranged(원거리/약함),3.5,65,6,5,2,1.4,3,0.2,Assets/Models/Skeleton_Warrior.fbx,Assets/Animations/MonsterAnimationController.controller,3,20
|
||||||
104,Fast(빠름/약함),8.6,45,6,1,2,1.0,3,0.333,Assets/Models/Skeleton_Rogue.fbx,Assets/Animations/MonsterAnimationController.controller,3,20
|
104,Fast(빠름/약함),6,45,6,1,2,1,3,0.333,Assets/Models/Skeleton_Rogue.fbx,Assets/Animations/MonsterAnimationController.controller,3,20
|
||||||
105,Elite(소수 정예),6.6,100,6,1,7,1.3,6,0.1,Assets/Models/Barbarian_Large.fbx,Assets/Animations/MonsterAnimationController.controller,5,20
|
105,Elite(소수 정예),4.5,100,6,1,7,1.3,6,0.1,Assets/Models/Barbarian_Large.fbx,Assets/Animations/MonsterAnimationController.controller,5,20
|
||||||
|
|||||||
|
@@ -1,2 +1,2 @@
|
|||||||
id,memo,move_speed,capacity,manpower,max_hp,sight,atk_range,atk_damage,atk_interval_sec,prefab_path
|
id,memo,move_speed,capacity,manpower,max_hp,sight,atk_range,atk_damage,atk_interval_sec,prefab_path
|
||||||
1,,5,50,10,100,10,3,10,1,Assets/Prefabs/Player/Player
|
1,,4,50,10,100,10,3,10,1,Assets/Prefabs/Player/Player
|
||||||
|
|||||||
|
@@ -1,12 +1,12 @@
|
|||||||
id,memo,building_name,level,upgrade_to,tower_type,mana,manpower,size_x,size_y,size_z,max_hp,sight,atk_range,atk_damage,atk_interval_sec,model_path
|
id,memo,building_name,level,upgrade_to,tower_type,mana,manpower,size_x,size_y,size_z,max_hp,sight,atk_range,atk_damage,atk_interval_sec,model_path
|
||||||
1,타워,Arrow Tower Lv.1,1,2,attack,100,10,4,10,4,100,15,10,15,2,Assets/Models/building_tower_B_blue.fbx
|
1,타워,Arrow Tower Lv.1,1,2,attack,150,50,4,10,4,100,15,10,15,2,Assets/Models/building_tower_B_blue.fbx
|
||||||
2,타워,Arrow Tower Lv.2,2,3,attack,200,20,4,10,4,150,15,15,20,2,Assets/Models/building_tower_B_blue.fbx
|
2,타워,Arrow Tower Lv.2,2,3,attack,300,60,4,10,4,150,15,15,20,2,Assets/Models/building_tower_B_blue.fbx
|
||||||
3,타워,Arrow Tower Lv.3,3,4,attack,300,30,4,10,4,200,20,15,30,2,Assets/Models/building_tower_B_blue.fbx
|
3,타워,Arrow Tower Lv.3,3,4,attack,450,70,4,10,4,200,20,15,30,2,Assets/Models/building_tower_B_blue.fbx
|
||||||
4,타워,Arrow Tower Lv.4,4,5,attack,400,40,4,10,4,250,25,20,40,2,Assets/Models/building_tower_B_blue.fbx
|
4,타워,Arrow Tower Lv.4,4,5,attack,600,80,4,10,4,250,25,20,40,2,Assets/Models/building_tower_B_blue.fbx
|
||||||
5,타워,Arrow Tower Lv.5,5,,attack,600,50,4,10,4,400,25,25,50,2,Assets/Models/building_tower_B_blue.fbx
|
5,타워,Arrow Tower Lv.5,5,,attack,750,100,4,10,4,400,25,25,50,2,Assets/Models/building_tower_B_blue.fbx
|
||||||
6,벽,Wall Lv.1,1,7,defense,10,10,8,4,3,30,1,0,0,0,Assets/Models/wall_straight.fbx
|
6,벽,Wall Lv.1,1,7,defense,10,10,8,4,3,30,1,0,0,0,Assets/Models/wall_straight.fbx
|
||||||
7,벽,Wall Lv.2,2,8,defense,30,10,8,4,3,30,1,0,0,0,Assets/Models/wall_straight.fbx
|
7,벽,Wall Lv.2,2,8,defense,30,20,8,4,3,50,1,0,0,0,Assets/Models/wall_straight.fbx
|
||||||
8,벽,Wall Lv.3,3,9,defense,50,20,8,4,3,30,1,0,0,0,Assets/Models/wall_straight.fbx
|
8,벽,Wall Lv.3,3,9,defense,50,30,8,4,3,60,1,0,0,0,Assets/Models/wall_straight.fbx
|
||||||
9,벽,Wall Lv.4,4,10,defense,100,20,8,4,3,30,1,0,0,0,Assets/Models/wall_straight.fbx
|
9,벽,Wall Lv.4,4,10,defense,100,40,8,4,3,80,1,0,0,0,Assets/Models/wall_straight.fbx
|
||||||
10,벽,Wall Lv.5,5,,defense,150,20,8,4,3,30,1,0,0,0,Assets/Models/wall_straight.fbx
|
10,벽,Wall Lv.5,5,,defense,150,50,8,4,3,110,1,0,0,0,Assets/Models/wall_straight.fbx
|
||||||
11,와드,Ward Lv.1,1,,sight,10,10,1,1,1,10,5,0,0,0,Assets/Models/torch.fbx
|
11,와드,Ward Lv.1,1,,sight,10,10,1,1,1,10,5,0,0,0,Assets/Models/torch.fbx
|
||||||
|
|||||||
|
@@ -11,6 +11,6 @@
|
|||||||
10,노동력 증가 Lv.1,harvest,person,200,,player_manpower,add,5,10
|
10,노동력 증가 Lv.1,harvest,person,200,,player_manpower,add,5,10
|
||||||
11,노동력 증가 Lv.2,harvest,person,300,10,player_manpower,add,10,11
|
11,노동력 증가 Lv.2,harvest,person,300,10,player_manpower,add,10,11
|
||||||
12,노동력 증가 Lv.3,harvest,person,400,7; 10,player_manpower,add,20,12
|
12,노동력 증가 Lv.3,harvest,person,400,7; 10,player_manpower,add,20,12
|
||||||
13,이동속도 증가 Lv.1,scout,person,200,,player_move_speed,mul,1.2,13
|
13,이동속도 증가 Lv.1,scout,person,200,,player_move_speed,mul,1.5,13
|
||||||
14,이동속도 증가 Lv.2,scout,person,300,13,player_move_speed,mul,1.6,14
|
14,이동속도 증가 Lv.2,scout,person,300,13,player_move_speed,mul,2,14
|
||||||
15,이동속도 증가 Lv.3,scout,person,400,14,player_move_speed,mul,2,15
|
15,이동속도 증가 Lv.3,scout,person,400,14,player_move_speed,mul,2.5,15
|
||||||
|
|||||||
|
Reference in New Issue
Block a user