From ecf4d19b87cd196970515e9669b5e43f9ab65500 Mon Sep 17 00:00:00 2001
From: wangguan <wangguan@kt007.com>
Date: Sat, 07 Nov 2020 10:45:22 +0800
Subject: [PATCH] 隐藏怪物血条前的等级

---
 Assets/Scripts/Core/Health/HealthVisualizer.cs |  289 +++++++++++++++++++++++++++++----------------------------
 1 files changed, 147 insertions(+), 142 deletions(-)

diff --git a/Assets/Scripts/Core/Health/HealthVisualizer.cs b/Assets/Scripts/Core/Health/HealthVisualizer.cs
index 76709d8..e3273ee 100644
--- a/Assets/Scripts/Core/Health/HealthVisualizer.cs
+++ b/Assets/Scripts/Core/Health/HealthVisualizer.cs
@@ -6,161 +6,166 @@
 
 namespace Core.Health
 {
-	/// <summary>
-	/// Class to visualizer the health of a damageable
-	/// </summary>
-	public class HealthVisualizer : MonoBehaviour
-	{
-		/// <summary>
-		/// The DamageableBehaviour that will be used to assign the damageable
-		/// </summary>
-		[Tooltip("This field does not need to be populated here, it can be set up in code using AssignDamageable")]
-		public DamageableBehaviour damageableBehaviour;
-		
-		/// <summary>
-		/// The object whose X-scale we change to decrease the health bar. Should have a default uniform scale
-		/// </summary>
-		public Transform healthBar;
-		
-		/// <summary>
-		/// The object whose X-scale we change to increase the health bar background. Should have a default uniform scale
-		/// </summary>
-		public Transform backgroundBar;
+    /// <summary>
+    /// Class to visualizer the health of a damageable
+    /// </summary>
+    public class HealthVisualizer : MonoBehaviour
+    {
+        /// <summary>
+        /// The DamageableBehaviour that will be used to assign the damageable
+        /// </summary>
+        [Tooltip("This field does not need to be populated here, it can be set up in code using AssignDamageable")]
+        public DamageableBehaviour damageableBehaviour;
+
+        /// <summary>
+        /// The object whose X-scale we change to decrease the health bar. Should have a default uniform scale
+        /// </summary>
+        public Transform healthBar;
+
+        /// <summary>
+        /// The object whose X-scale we change to increase the health bar background. Should have a default uniform scale
+        /// </summary>
+        public Transform backgroundBar;
 
 
-		/// <summary>
-		/// 处理当前的TextMeshPro.
-		/// </summary>
-		public TextMeshPro textMesh;
+        /// <summary>
+        /// 处理当前的TextMeshPro.
+        /// </summary>
+        public TextMeshPro textMesh;
 
-		/// <summary>
-		/// 替换levelMaterial对应的GameObject.
-		/// </summary>
-		public GameObject levelQuad;
+        /// <summary>
+        /// 替换levelMaterial对应的GameObject.
+        /// </summary>
+        public GameObject levelQuad;
 
-		public List<Material> levelMaterial;
+        public List<Material> levelMaterial;
 
-		/// <summary>
-		/// Whether to show this health bar even when it is full
-		/// </summary>
-		public bool showWhenFull;
+        /// <summary>
+        /// Whether to show this health bar even when it is full
+        /// </summary>
+        public bool showWhenFull;
 
-		/// <summary>
-		/// Camera to face the visualization at
-		/// </summary>
-		protected Transform m_CameraToFace;
+        /// <summary>
+        /// Camera to face the visualization at
+        /// </summary>
+        protected Transform m_CameraToFace;
 
-		/// <summary>
-		/// Damageable whose health is visualized
-		/// </summary>
-		protected Damageable m_Damageable;
+        /// <summary>
+        /// Damageable whose health is visualized
+        /// </summary>
+        protected Damageable m_Damageable;
 
 
-		/// <summary>
-		/// 是否反方的HealthBar.
-		/// </summary>
-		public bool bOpponent { get; set; }
+        /// <summary>
+        /// 是否反方的HealthBar.
+        /// </summary>
+        public bool bOpponent { get; set; }
 
-		//protected int BloodTest = 1234;
+        //protected int BloodTest = 1234;
 
-		/// <summary>
-		/// Updates the visualization of the health
-		/// </summary>
-		/// <param name="normalizedHealth">Normalized health value</param>
-		public void UpdateHealth(float normalizedHealth)
-		{
-			Vector3 scale = Vector3.one;
-
-			if (healthBar != null)
-			{
-				//scale.x = normalizedHealth;
-				//healthBar.transform.localScale = scale;
-				healthBar.transform.DOScaleX(normalizedHealth, 0.3f);
-			}
-
-			if (backgroundBar != null)
-			{
-				scale.x = 1;// - normalizedHealth;
-				backgroundBar.transform.localScale = scale;
-			}
-
-			// TEST CODE: 测试场景内飘字的效果,可以继续加强这一块的效果.
-			if (this.textMesh)
-				this.textMesh.text = Math.Floor(m_Damageable.currentHealth).ToString();
-
-			SetVisible((showWhenFull || normalizedHealth < 1.0f) && (!this.bOpponent));
-		}
-
-		/// <summary>
-		/// Sets the visibility status of this visualiser
-		/// </summary>
-		public void SetVisible(bool visible)
-		{
-			gameObject.SetActive(visible);
-		}
-
-		/// <summary>
-		/// Assigns the damageable, subscribing to the damaged event
-		/// </summary>
-		/// <param name="damageable">Damageable to assign</param>
-		public void AssignDamageable(Damageable damageable)
-		{
-			if (m_Damageable != null)
-			{
-				m_Damageable.healthChanged -= OnHealthChanged;
-			}
-			m_Damageable = damageable;
-			m_Damageable.healthChanged += OnHealthChanged;
-		}
-
-		/// <summary>
-		/// Turns us to face the camera,公告板的算法原理:
-		/// </summary>
-		protected virtual void Update()
-		{
-			Vector3 direction = m_CameraToFace.transform.forward;
-			transform.forward = -direction;
-		}
-
-		/// <summary>
-		/// Assigns a damageable if damageableBehaviour is populated
-		/// </summary>
-		protected virtual void Awake()
-		{
-			if (damageableBehaviour != null)
-			{
-				AssignDamageable(damageableBehaviour.configuration);
-			}
-		}
-
-		/// <summary>
-		/// Caches the main camera
-		/// </summary>
-		protected virtual void Start()
-		{
-			m_CameraToFace = UnityEngine.Camera.main.transform;
-
-		}
-
-		/// <summary>
-		/// 设置血条对应的等级数据。
-		/// </summary>
-		/// <param name="lvl"></param>
-		public void SetHealthLevel( int lvl)
+        /// <summary>
+        /// Updates the visualization of the health
+        /// </summary>
+        /// <param name="normalizedHealth">Normalized health value</param>
+        public void UpdateHealth(float normalizedHealth)
         {
-			if (lvl < 0)
-			{
-				levelQuad.gameObject.SetActive(false);
-				return;
-			}
+            Vector3 scale = Vector3.one;
 
-			if( this.levelQuad)
-				levelQuad.GetComponent<MeshRenderer>().material = levelMaterial[lvl];
+            if (healthBar != null)
+            {
+                //scale.x = normalizedHealth;
+                //healthBar.transform.localScale = scale;
+                healthBar.transform.DOScaleX(normalizedHealth, 0.3f);
+            }
+
+            if (backgroundBar != null)
+            {
+                scale.x = 1;// - normalizedHealth;
+                backgroundBar.transform.localScale = scale;
+            }
+
+            // TEST CODE: 测试场景内飘字的效果,可以继续加强这一块的效果.
+            if (this.textMesh)
+                this.textMesh.text = Math.Floor(m_Damageable.currentHealth).ToString();
+
+            SetVisible((showWhenFull || normalizedHealth < 1.0f) && (!this.bOpponent));
         }
 
-		void OnHealthChanged(HealthChangeInfo healthChangeInfo)
-		{
-			UpdateHealth(m_Damageable.normalisedHealth);
-		}
-	}
+        /// <summary>
+        /// Sets the visibility status of this visualiser
+        /// </summary>
+        public void SetVisible(bool visible)
+        {
+            gameObject.SetActive(visible);
+        }
+
+        /// <summary>
+        /// Assigns the damageable, subscribing to the damaged event
+        /// </summary>
+        /// <param name="damageable">Damageable to assign</param>
+        public void AssignDamageable(Damageable damageable)
+        {
+            if (m_Damageable != null)
+            {
+                m_Damageable.healthChanged -= OnHealthChanged;
+            }
+            m_Damageable = damageable;
+            m_Damageable.healthChanged += OnHealthChanged;
+        }
+
+        /// <summary>
+        /// Turns us to face the camera,公告板的算法原理:
+        /// </summary>
+        protected virtual void Update()
+        {
+            Vector3 direction = m_CameraToFace.transform.forward;
+            transform.forward = -direction;
+        }
+
+        /// <summary>
+        /// Assigns a damageable if damageableBehaviour is populated
+        /// </summary>
+        protected virtual void Awake()
+        {
+            if (damageableBehaviour != null)
+            {
+                AssignDamageable(damageableBehaviour.configuration);
+            }
+        }
+
+        /// <summary>
+        /// Caches the main camera
+        /// </summary>
+        protected virtual void Start()
+        {
+            m_CameraToFace = UnityEngine.Camera.main.transform;
+        }
+
+        /// <summary>
+        /// 设置血条对应的等级数据。
+        /// </summary>
+        /// <param name="lvl"></param>
+        public void SetHealthLevel(int lvl)
+        {
+            if (levelQuad.activeSelf)
+            {
+                levelQuad.gameObject.SetActive(false);
+
+            }
+            return;
+            if (lvl < 0)
+            {
+                levelQuad.gameObject.SetActive(false);
+                return;
+            }
+
+            if (this.levelQuad)
+                levelQuad.GetComponent<MeshRenderer>().material = levelMaterial[lvl];
+        }
+
+        void OnHealthChanged(HealthChangeInfo healthChangeInfo)
+        {
+            UpdateHealth(m_Damageable.normalisedHealth);
+        }
+    }
 }
\ No newline at end of file

--
Gitblit v1.9.1