Added UI Management for mana and health

This commit is contained in:
Hazim Bin Ijaz 2025-08-11 13:57:28 +05:00
parent 5c47271d8c
commit 7a0330f88e
12 changed files with 1119 additions and 177 deletions

View File

@ -12378,7 +12378,9 @@ RectTransform:
m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: [] m_Children:
- {fileID: 1053253995}
- {fileID: 1676488288}
m_Father: {fileID: 812152301} m_Father: {fileID: 812152301}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0} m_AnchorMin: {x: 0, y: 0}
@ -15467,12 +15469,6 @@ Transform:
type: 3} type: 3}
m_PrefabInstance: {fileID: 108509478} m_PrefabInstance: {fileID: 108509478}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
--- !u!1 &109262111 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 4680818796634823330, guid: dc3f4998066447e4ebccba9fefe0f278,
type: 3}
m_PrefabInstance: {fileID: 757714195}
m_PrefabAsset: {fileID: 0}
--- !u!1 &110296706 stripped --- !u!1 &110296706 stripped
GameObject: GameObject:
m_CorrespondingSourceObject: {fileID: 1030975172, guid: abc00000000014995704704072955557, m_CorrespondingSourceObject: {fileID: 1030975172, guid: abc00000000014995704704072955557,
@ -116517,161 +116513,6 @@ MeshFilter:
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 757252437} m_GameObject: {fileID: 757252437}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!1001 &757714195
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 4680818796634823330, guid: dc3f4998066447e4ebccba9fefe0f278,
type: 3}
propertyPath: m_Name
value: Character
objectReference: {fileID: 0}
- target: {fileID: 4680818796634823330, guid: dc3f4998066447e4ebccba9fefe0f278,
type: 3}
propertyPath: m_IsActive
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4680818796634823330, guid: dc3f4998066447e4ebccba9fefe0f278,
type: 3}
propertyPath: m_TagString
value: Player
objectReference: {fileID: 0}
- target: {fileID: 4680818796634823341, guid: dc3f4998066447e4ebccba9fefe0f278,
type: 3}
propertyPath: m_RootOrder
value: 306
objectReference: {fileID: 0}
- target: {fileID: 4680818796634823341, guid: dc3f4998066447e4ebccba9fefe0f278,
type: 3}
propertyPath: m_LocalPosition.x
value: 123.2
objectReference: {fileID: 0}
- target: {fileID: 4680818796634823341, guid: dc3f4998066447e4ebccba9fefe0f278,
type: 3}
propertyPath: m_LocalPosition.y
value: 29.097
objectReference: {fileID: 0}
- target: {fileID: 4680818796634823341, guid: dc3f4998066447e4ebccba9fefe0f278,
type: 3}
propertyPath: m_LocalPosition.z
value: 338.48
objectReference: {fileID: 0}
- target: {fileID: 4680818796634823341, guid: dc3f4998066447e4ebccba9fefe0f278,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4680818796634823341, guid: dc3f4998066447e4ebccba9fefe0f278,
type: 3}
propertyPath: m_LocalRotation.x
value: -0
objectReference: {fileID: 0}
- target: {fileID: 4680818796634823341, guid: dc3f4998066447e4ebccba9fefe0f278,
type: 3}
propertyPath: m_LocalRotation.y
value: -0
objectReference: {fileID: 0}
- target: {fileID: 4680818796634823341, guid: dc3f4998066447e4ebccba9fefe0f278,
type: 3}
propertyPath: m_LocalRotation.z
value: -0
objectReference: {fileID: 0}
- target: {fileID: 4680818796634823341, guid: dc3f4998066447e4ebccba9fefe0f278,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4680818796634823341, guid: dc3f4998066447e4ebccba9fefe0f278,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4680818796634823341, guid: dc3f4998066447e4ebccba9fefe0f278,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4680818797271520422, guid: dc3f4998066447e4ebccba9fefe0f278,
type: 3}
propertyPath: m_RenderingPath
value: -1
objectReference: {fileID: 0}
- target: {fileID: 4680818797271520422, guid: dc3f4998066447e4ebccba9fefe0f278,
type: 3}
propertyPath: m_BackGroundColor.a
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4680818797271520422, guid: dc3f4998066447e4ebccba9fefe0f278,
type: 3}
propertyPath: m_BackGroundColor.b
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4680818797271520422, guid: dc3f4998066447e4ebccba9fefe0f278,
type: 3}
propertyPath: m_BackGroundColor.g
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4680818797271520422, guid: dc3f4998066447e4ebccba9fefe0f278,
type: 3}
propertyPath: m_BackGroundColor.r
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4680818797271520422, guid: dc3f4998066447e4ebccba9fefe0f278,
type: 3}
propertyPath: m_AllowDynamicResolution
value: 0
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents:
- targetCorrespondingSourceObject: {fileID: 4680818796634823330, guid: dc3f4998066447e4ebccba9fefe0f278,
type: 3}
insertIndex: -1
addedObject: {fileID: 757714200}
- targetCorrespondingSourceObject: {fileID: 4680818796634823330, guid: dc3f4998066447e4ebccba9fefe0f278,
type: 3}
insertIndex: -1
addedObject: {fileID: 757714199}
m_SourcePrefab: {fileID: 100100000, guid: dc3f4998066447e4ebccba9fefe0f278, type: 3}
--- !u!114 &757714199
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 109262111}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 6ae53beee9ce9b24097289adbb0d7d5e, type: 3}
m_Name:
m_EditorClassIdentifier:
maxMana: 100
mana: 100
enableRegen: 1
regenPerSecond: 8
regenDelayAfterSpend: 1
--- !u!114 &757714200
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 109262111}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 7318ee1be010c1e43b9f45dbbe3a8d9d, type: 3}
m_Name:
m_EditorClassIdentifier:
maxHealth: 100
health: 100
enableRegen: 1
regenPerSecond: 1.5
regenDelayAfterDamage: 4
--- !u!1001 &757733958 --- !u!1001 &757733958
PrefabInstance: PrefabInstance:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -164991,6 +164832,142 @@ Transform:
type: 3} type: 3}
m_PrefabInstance: {fileID: 1052851453} m_PrefabInstance: {fileID: 1052851453}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
--- !u!1001 &1053253994
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 94165390}
m_Modifications:
- target: {fileID: 1244597452191189718, guid: 951d711b27ffb9243b942d8d2c45e042,
type: 3}
propertyPath: m_Name
value: HealthBar
objectReference: {fileID: 0}
- target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042,
type: 3}
propertyPath: m_Pivot.x
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042,
type: 3}
propertyPath: m_Pivot.y
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042,
type: 3}
propertyPath: m_AnchorMax.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042,
type: 3}
propertyPath: m_AnchorMax.y
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042,
type: 3}
propertyPath: m_AnchorMin.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042,
type: 3}
propertyPath: m_AnchorMin.y
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042,
type: 3}
propertyPath: m_SizeDelta.x
value: 900
objectReference: {fileID: 0}
- target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042,
type: 3}
propertyPath: m_SizeDelta.y
value: 25
objectReference: {fileID: 0}
- target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042,
type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042,
type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042,
type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042,
type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042,
type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042,
type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042,
type: 3}
propertyPath: m_AnchoredPosition.x
value: 470
objectReference: {fileID: 0}
- target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042,
type: 3}
propertyPath: m_AnchoredPosition.y
value: -150
objectReference: {fileID: 0}
- target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 951d711b27ffb9243b942d8d2c45e042, type: 3}
--- !u!224 &1053253995 stripped
RectTransform:
m_CorrespondingSourceObject: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042,
type: 3}
m_PrefabInstance: {fileID: 1053253994}
m_PrefabAsset: {fileID: 0}
--- !u!114 &1053253996 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 4521506559915874773, guid: 951d711b27ffb9243b942d8d2c45e042,
type: 3}
m_PrefabInstance: {fileID: 1053253994}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1001 &1053499535 --- !u!1001 &1053499535
PrefabInstance: PrefabInstance:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -275880,6 +275857,157 @@ Transform:
type: 3} type: 3}
m_PrefabInstance: {fileID: 1674965808} m_PrefabInstance: {fileID: 1674965808}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
--- !u!1001 &1676488287
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 94165390}
m_Modifications:
- target: {fileID: 1244597452191189718, guid: 951d711b27ffb9243b942d8d2c45e042,
type: 3}
propertyPath: m_Name
value: ManaBar
objectReference: {fileID: 0}
- target: {fileID: 4521506559915874773, guid: 951d711b27ffb9243b942d8d2c45e042,
type: 3}
propertyPath: m_Color.b
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4521506559915874773, guid: 951d711b27ffb9243b942d8d2c45e042,
type: 3}
propertyPath: m_Color.g
value: 0.8594818
objectReference: {fileID: 0}
- target: {fileID: 4521506559915874773, guid: 951d711b27ffb9243b942d8d2c45e042,
type: 3}
propertyPath: m_Color.r
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042,
type: 3}
propertyPath: m_Pivot.x
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042,
type: 3}
propertyPath: m_Pivot.y
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042,
type: 3}
propertyPath: m_AnchorMax.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042,
type: 3}
propertyPath: m_AnchorMax.y
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042,
type: 3}
propertyPath: m_AnchorMin.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042,
type: 3}
propertyPath: m_AnchorMin.y
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042,
type: 3}
propertyPath: m_SizeDelta.x
value: 900
objectReference: {fileID: 0}
- target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042,
type: 3}
propertyPath: m_SizeDelta.y
value: 25
objectReference: {fileID: 0}
- target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042,
type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042,
type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042,
type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042,
type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042,
type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042,
type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042,
type: 3}
propertyPath: m_AnchoredPosition.x
value: 470
objectReference: {fileID: 0}
- target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042,
type: 3}
propertyPath: m_AnchoredPosition.y
value: -93
objectReference: {fileID: 0}
- target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 951d711b27ffb9243b942d8d2c45e042, type: 3}
--- !u!224 &1676488288 stripped
RectTransform:
m_CorrespondingSourceObject: {fileID: 7172057295676675169, guid: 951d711b27ffb9243b942d8d2c45e042,
type: 3}
m_PrefabInstance: {fileID: 1676488287}
m_PrefabAsset: {fileID: 0}
--- !u!114 &1676488289 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 4521506559915874773, guid: 951d711b27ffb9243b942d8d2c45e042,
type: 3}
m_PrefabInstance: {fileID: 1676488287}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1001 &1677015364 --- !u!1001 &1677015364
PrefabInstance: PrefabInstance:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -353825,6 +353953,84 @@ Transform:
- {fileID: 274935958} - {fileID: 274935958}
m_Father: {fileID: 226261319} m_Father: {fileID: 226261319}
m_LocalEulerAnglesHint: {x: 0, y: -143.87, z: 0} m_LocalEulerAnglesHint: {x: 0, y: -143.87, z: 0}
--- !u!1001 &2042403783257441060
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 3960509566317876621, guid: 576abe9759f86e542b8cee9ae2f0ffd7,
type: 3}
propertyPath: m_Name
value: Character
objectReference: {fileID: 0}
- target: {fileID: 4580555029999605212, guid: 576abe9759f86e542b8cee9ae2f0ffd7,
type: 3}
propertyPath: manaFillImage
value:
objectReference: {fileID: 1676488289}
- target: {fileID: 6446424649472988537, guid: 576abe9759f86e542b8cee9ae2f0ffd7,
type: 3}
propertyPath: m_LocalPosition.x
value: 123.2
objectReference: {fileID: 0}
- target: {fileID: 6446424649472988537, guid: 576abe9759f86e542b8cee9ae2f0ffd7,
type: 3}
propertyPath: m_LocalPosition.y
value: 29.097
objectReference: {fileID: 0}
- target: {fileID: 6446424649472988537, guid: 576abe9759f86e542b8cee9ae2f0ffd7,
type: 3}
propertyPath: m_LocalPosition.z
value: 338.48
objectReference: {fileID: 0}
- target: {fileID: 6446424649472988537, guid: 576abe9759f86e542b8cee9ae2f0ffd7,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 6446424649472988537, guid: 576abe9759f86e542b8cee9ae2f0ffd7,
type: 3}
propertyPath: m_LocalRotation.x
value: -0
objectReference: {fileID: 0}
- target: {fileID: 6446424649472988537, guid: 576abe9759f86e542b8cee9ae2f0ffd7,
type: 3}
propertyPath: m_LocalRotation.y
value: -0
objectReference: {fileID: 0}
- target: {fileID: 6446424649472988537, guid: 576abe9759f86e542b8cee9ae2f0ffd7,
type: 3}
propertyPath: m_LocalRotation.z
value: -0
objectReference: {fileID: 0}
- target: {fileID: 6446424649472988537, guid: 576abe9759f86e542b8cee9ae2f0ffd7,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6446424649472988537, guid: 576abe9759f86e542b8cee9ae2f0ffd7,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6446424649472988537, guid: 576abe9759f86e542b8cee9ae2f0ffd7,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8831903355050671002, guid: 576abe9759f86e542b8cee9ae2f0ffd7,
type: 3}
propertyPath: healthFillImage
value:
objectReference: {fileID: 1053253996}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 576abe9759f86e542b8cee9ae2f0ffd7, type: 3}
--- !u!1001 &2612565535725099600 --- !u!1001 &2612565535725099600
PrefabInstance: PrefabInstance:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -354828,6 +355034,6 @@ SceneRoots:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
m_Roots: m_Roots:
- {fileID: 1161484236} - {fileID: 1161484236}
- {fileID: 757714195} - {fileID: 2042403783257441060}
- {fileID: 812152301} - {fileID: 812152301}
- {fileID: 1282845313} - {fileID: 1282845313}

8
Assets/Prefabs.meta Normal file
View File

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

View File

@ -0,0 +1,290 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &2191382144852172495
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8295047734135990781}
- component: {fileID: 4646540326165960552}
- component: {fileID: 8919498076661180667}
- component: {fileID: 6687888136625202998}
m_Layer: 0
m_Name: MainCamera
m_TagString: MainCamera
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &8295047734135990781
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2191382144852172495}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0.873, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 6446424649472988537}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!20 &4646540326165960552
Camera:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2191382144852172495}
m_Enabled: 1
serializedVersion: 2
m_ClearFlags: 1
m_BackGroundColor: {r: 0, g: 0, b: 0, a: 1}
m_projectionMatrixMode: 1
m_GateFitMode: 2
m_FOVAxisMode: 0
m_Iso: 200
m_ShutterSpeed: 0.005
m_Aperture: 16
m_FocusDistance: 10
m_FocalLength: 50
m_BladeCount: 5
m_Curvature: {x: 2, y: 11}
m_BarrelClipping: 0.25
m_Anamorphism: 0
m_SensorSize: {x: 36, y: 24}
m_LensShift: {x: 0, y: 0}
m_NormalizedViewPortRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
near clip plane: 0.3
far clip plane: 10000
field of view: 60
orthographic: 0
orthographic size: 5
m_Depth: 0
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_RenderingPath: -1
m_TargetTexture: {fileID: 0}
m_TargetDisplay: 0
m_TargetEye: 3
m_HDR: 1
m_AllowMSAA: 1
m_AllowDynamicResolution: 0
m_ForceIntoRT: 0
m_OcclusionCulling: 1
m_StereoConvergence: 10
m_StereoSeparation: 0.022
--- !u!81 &8919498076661180667
AudioListener:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2191382144852172495}
m_Enabled: 1
--- !u!114 &6687888136625202998
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2191382144852172495}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3}
m_Name:
m_EditorClassIdentifier:
m_RenderShadows: 1
m_RequiresDepthTextureOption: 2
m_RequiresOpaqueTextureOption: 2
m_CameraType: 0
m_Cameras: []
m_RendererIndex: -1
m_VolumeLayerMask:
serializedVersion: 2
m_Bits: 1
m_VolumeTrigger: {fileID: 0}
m_VolumeFrameworkUpdateModeOption: 2
m_RenderPostProcessing: 1
m_Antialiasing: 3
m_AntialiasingQuality: 2
m_StopNaN: 0
m_Dithering: 0
m_ClearDepth: 1
m_AllowXRRendering: 1
m_AllowHDROutput: 1
m_UseScreenCoordOverride: 0
m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0}
m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0}
m_RequiresDepthTexture: 0
m_RequiresColorTexture: 0
m_Version: 2
m_TaaSettings:
m_Quality: 3
m_FrameInfluence: 0.1
m_JitterScale: 1
m_MipBias: 0
m_VarianceClampScale: 0.9
m_ContrastAdaptiveSharpening: 0
--- !u!1 &3960509566317876621
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6446424649472988537}
- component: {fileID: 7291163819938778696}
- component: {fileID: 5031743721561312927}
- component: {fileID: 8831903355050671002}
- component: {fileID: 4580555029999605212}
m_Layer: 0
m_Name: Character
m_TagString: Player
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &6446424649472988537
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3960509566317876621}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 123.2, y: 29.097, z: 338.48}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 8295047734135990781}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!143 &7291163819938778696
CharacterController:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3960509566317876621}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 0
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 3
m_Height: 2
m_Radius: 0.5
m_SlopeLimit: 45
m_StepOffset: 0.3
m_SkinWidth: 0.08
m_MinMoveDistance: 0.001
m_Center: {x: 0, y: 0, z: 0}
--- !u!114 &5031743721561312927
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3960509566317876621}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fd55d7d9f01c1f144891ce8894793b9b, type: 3}
m_Name:
m_EditorClassIdentifier:
canSprint: 1
canJump: 1
canCrouch: 1
canHeadBob: 1
canInteract: 1
useFootsteps: 0
sprintKey: 304
jumpKey: 32
crouchKey: 306
interactKey: 101
interactionRayPoint: {x: 0, y: 0, z: 0}
interactionDistance: 0
interactionLayer:
serializedVersion: 2
m_Bits: 0
walkSpeed: 6
sprintSpeed: 12
crouchSpeed: 1.5
lookSpeedX: 2
lookSpeedY: 2
lowerLookLimit: 80
upperLookLimit: 80
jumpForce: 8
gravity: 30
crouchHeight: 0.5
standinghHeight: 2
timeToCrouch: 0.25
crouchCenter: {x: 0, y: 0.5, z: 0}
standingCenter: {x: 0, y: 0, z: 0}
walkBobSpeed: 14
walkBobAmount: 0.05
sprintBobSpeed: 18
sprintBobAmount: 0.11
baseStepSpeed: 0.5
crouchStepMultiplier: 1.5
sprintStepMultiplier: 0.6
footstepAudioSource: {fileID: 0}
woodClips: []
stoneClips: []
waterClips: []
grassClips: []
--- !u!114 &8831903355050671002
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3960509566317876621}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 7318ee1be010c1e43b9f45dbbe3a8d9d, type: 3}
m_Name:
m_EditorClassIdentifier:
maxHealth: 100
health: 100
enableRegen: 1
regenPerSecond: 1.5
regenDelayAfterDamage: 8
healthFillImage: {fileID: 0}
--- !u!114 &4580555029999605212
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3960509566317876621}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 6ae53beee9ce9b24097289adbb0d7d5e, type: 3}
m_Name:
m_EditorClassIdentifier:
maxMana: 100
mana: 100
enableRegen: 1
regenPerSecond: 8
regenDelayAfterSpend: 8
manaFillImage: {fileID: 0}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 576abe9759f86e542b8cee9ae2f0ffd7
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

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

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

View File

@ -0,0 +1,189 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &147923091762810145
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2581067900589736530}
- component: {fileID: 8433273748947172046}
- component: {fileID: 4521506559915874773}
m_Layer: 5
m_Name: Fill
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &2581067900589736530
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 147923091762810145}
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: 3771816303656470919}
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: 900, y: 24}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8433273748947172046
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 147923091762810145}
m_CullTransparentMesh: 1
--- !u!114 &4521506559915874773
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 147923091762810145}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, 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: 21300000, guid: d0f7dbe30dfbcf74498876fedf52ea7a, 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 &1244597452191189718
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7172057295676675169}
m_Layer: 5
m_Name: Bar
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &7172057295676675169
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1244597452191189718}
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: 3771816303656470919}
m_Father: {fileID: 0}
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: 471, y: 100}
m_SizeDelta: {x: 900, y: 25}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!1 &4999473199987106019
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3771816303656470919}
- component: {fileID: 8197332393511138946}
- component: {fileID: 1752518680494453832}
m_Layer: 5
m_Name: BG
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &3771816303656470919
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4999473199987106019}
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: 2581067900589736530}
m_Father: {fileID: 7172057295676675169}
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: 900, y: 25}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8197332393511138946
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4999473199987106019}
m_CullTransparentMesh: 1
--- !u!114 &1752518680494453832
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4999473199987106019}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
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: 21300000, guid: d0f7dbe30dfbcf74498876fedf52ea7a, type: 3}
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

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 951d711b27ffb9243b942d8d2c45e042
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,7 +1,8 @@
using System.Collections; using System.Collections;
using System.Collections.Generic;
using Polyart; using Polyart;
using UnityEngine; using UnityEngine;
using UnityEngine.UI;
using DG.Tweening; // DOTween
public class HealthManager : MonoBehaviour public class HealthManager : MonoBehaviour
{ {
@ -9,17 +10,21 @@ public class HealthManager : MonoBehaviour
public float maxHealth = 100f; public float maxHealth = 100f;
public float health = 100f; public float health = 100f;
[Header("Regen (optional)")] [Header("Regen")]
public bool enableRegen = true; public bool enableRegen = true;
public float regenPerSecond = 1.5f; public float regenPerSecond = 1.5f;
public float regenDelayAfterDamage = 4f; public float regenDelayAfterDamage = 4f;
[Header("UI")]
public Image healthFillImage; // or assign an Image with fillAmount
bool isDead = false; bool isDead = false;
float regenResumeTime = 0f; float regenResumeTime = 0f;
void Awake() void Awake()
{ {
health = Mathf.Clamp(health, 0, maxHealth); health = Mathf.Clamp(health, 0, maxHealth);
InitUI();
} }
void Update() void Update()
@ -28,14 +33,14 @@ public class HealthManager : MonoBehaviour
if (Time.time < regenResumeTime) return; if (Time.time < regenResumeTime) return;
if (health >= maxHealth) return; if (health >= maxHealth) return;
health = Mathf.Min(maxHealth, health + regenPerSecond * Time.deltaTime); SetHealth(Mathf.Min(maxHealth, health + regenPerSecond * Time.deltaTime));
} }
public void TakeDamage(float damage) public void TakeDamage(float damage)
{ {
if (isDead || damage <= 0f) return; if (isDead || damage <= 0f) return;
health = Mathf.Max(0f, health - damage); SetHealth(Mathf.Max(0f, health - damage));
regenResumeTime = Time.time + Mathf.Max(0f, regenDelayAfterDamage); regenResumeTime = Time.time + Mathf.Max(0f, regenDelayAfterDamage);
if (health <= 0f) Die(); if (health <= 0f) Die();
@ -44,11 +49,17 @@ public class HealthManager : MonoBehaviour
public void Heal(float amount) public void Heal(float amount)
{ {
if (amount <= 0f || isDead) return; if (amount <= 0f || isDead) return;
health = Mathf.Min(maxHealth, health + amount); SetHealth(Mathf.Min(maxHealth, health + amount));
} }
public bool IsDead() => isDead; public bool IsDead() => isDead;
void SetHealth(float newValue)
{
health = newValue;
UpdateUI();
}
void Die() void Die()
{ {
if (isDead) return; if (isDead) return;
@ -57,14 +68,34 @@ public class HealthManager : MonoBehaviour
var anim = GetComponent<Animator>(); var anim = GetComponent<Animator>();
if (anim) anim.SetTrigger("die"); if (anim) anim.SetTrigger("die");
// If you have an ActionScheduler, uncomment:
// var scheduler = GetComponent<ActionScheduler>();
// if (scheduler) scheduler.CancelCurrentAction();
var cc = GetComponent<CharacterController>(); var cc = GetComponent<CharacterController>();
if (cc) cc.enabled = false; if (cc) cc.enabled = false;
var fps = GetComponent<FirstPersonController_Polyart>(); var fps = GetComponent<FirstPersonController_Polyart>();
if (fps) fps.enabled = false; if (fps) fps.enabled = false;
} }
void InitUI()
{
if (healthFillImage)
healthFillImage.fillAmount = health / maxHealth;
}
void UpdateUI()
{
if (healthFillImage)
{
healthFillImage.DOFillAmount(health / maxHealth, 0.25f).SetEase(Ease.OutCubic);
}
}
// ===== Debug Menu =====
[ContextMenu("Debug/Take 10 Damage")]
void DebugTakeDamage() => TakeDamage(10f);
[ContextMenu("Debug/Heal 10")]
void DebugHeal() => Heal(10f);
[ContextMenu("Debug/Kill")]
void DebugKill() => TakeDamage(maxHealth);
} }

View File

@ -1,6 +1,6 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine; using UnityEngine;
using UnityEngine.UI;
using DG.Tweening; // DOTween
public class ManaManager : MonoBehaviour public class ManaManager : MonoBehaviour
{ {
@ -13,11 +13,15 @@ public class ManaManager : MonoBehaviour
public float regenPerSecond = 8f; public float regenPerSecond = 8f;
public float regenDelayAfterSpend = 1.0f; public float regenDelayAfterSpend = 1.0f;
[Header("UI")]
public Image manaFillImage; // or assign an Image with fillAmount
float regenResumeTime = 0f; float regenResumeTime = 0f;
void Awake() void Awake()
{ {
mana = Mathf.Clamp(mana, 0, maxMana); mana = Mathf.Clamp(mana, 0, maxMana);
InitUI();
} }
void Update() void Update()
@ -26,7 +30,7 @@ public class ManaManager : MonoBehaviour
if (Time.time < regenResumeTime) return; if (Time.time < regenResumeTime) return;
if (mana >= maxMana) return; if (mana >= maxMana) return;
mana = Mathf.Min(maxMana, mana + regenPerSecond * Time.deltaTime); SetMana(Mathf.Min(maxMana, mana + regenPerSecond * Time.deltaTime));
} }
public bool Has(float amount) => mana >= amount; public bool Has(float amount) => mana >= amount;
@ -36,7 +40,7 @@ public class ManaManager : MonoBehaviour
if (amount <= 0f) return true; if (amount <= 0f) return true;
if (mana < amount) return false; if (mana < amount) return false;
mana -= amount; SetMana(mana - amount);
regenResumeTime = Time.time + Mathf.Max(0f, regenDelayAfterSpend); regenResumeTime = Time.time + Mathf.Max(0f, regenDelayAfterSpend);
return true; return true;
} }
@ -44,7 +48,7 @@ public class ManaManager : MonoBehaviour
public void Refill(float amount) public void Refill(float amount)
{ {
if (amount <= 0f) return; if (amount <= 0f) return;
mana = Mathf.Min(maxMana, mana + amount); SetMana(Mathf.Min(maxMana, mana + amount));
} }
public void SetMax(float newMax, bool keepRatio = true) public void SetMax(float newMax, bool keepRatio = true)
@ -53,5 +57,36 @@ public class ManaManager : MonoBehaviour
float ratio = maxMana > 0 ? mana / maxMana : 1f; float ratio = maxMana > 0 ? mana / maxMana : 1f;
maxMana = newMax; maxMana = newMax;
mana = keepRatio ? Mathf.Clamp01(ratio) * maxMana : Mathf.Min(mana, maxMana); mana = keepRatio ? Mathf.Clamp01(ratio) * maxMana : Mathf.Min(mana, maxMana);
InitUI();
} }
void SetMana(float newValue)
{
mana = newValue;
UpdateUI();
}
void InitUI()
{
if (manaFillImage)
manaFillImage.fillAmount = mana / maxMana;
}
void UpdateUI()
{
if (manaFillImage)
{
manaFillImage.DOFillAmount(mana / maxMana, 0.25f).SetEase(Ease.OutCubic);
}
}
// ===== Debug Menu =====
[ContextMenu("Debug/Spend 10 Mana")]
void DebugSpend() => Spend(10f);
[ContextMenu("Debug/Refill 10 Mana")]
void DebugRefill() => Refill(10f);
[ContextMenu("Debug/Empty Mana")]
void DebugEmpty() => Spend(maxMana);
} }

8
Assets/UI.meta Normal file
View File

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

BIN
Assets/UI/2x2_Texture.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View File

@ -0,0 +1,153 @@
fileFormatVersion: 2
guid: d0f7dbe30dfbcf74498876fedf52ea7a
TextureImporter:
internalIDToNameTable: []
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: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
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: 3
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: 3
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
- serializedVersion: 3
buildTarget: iPhone
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: 3
buildTarget: WebGL
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: 3
buildTarget: Android
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: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant: