From 234c25bc8761a4d41bc5b4aa362449cf3e806e13 Mon Sep 17 00:00:00 2001 From: chai Date: Fri, 17 Sep 2021 20:09:19 +0800 Subject: *unit image effect --- Assets/Scripts/Unit/Controller/UnitController.cs | 48 ++++++++++++++++++------ 1 file changed, 37 insertions(+), 11 deletions(-) (limited to 'Assets/Scripts/Unit/Controller/UnitController.cs') diff --git a/Assets/Scripts/Unit/Controller/UnitController.cs b/Assets/Scripts/Unit/Controller/UnitController.cs index ff3d9df2..6ccf124b 100644 --- a/Assets/Scripts/Unit/Controller/UnitController.cs +++ b/Assets/Scripts/Unit/Controller/UnitController.cs @@ -44,6 +44,8 @@ public class UnitController : MonoBehaviour/*, Interactable*/ public GameObject unitObj; // 角色模型 + protected List unitComponents; + #region 事件监听 public delegate void OnTimelineEventHandle(AnimationEventBase animEvent); public OnTimelineEventHandle onTimelineEvent { get; set; } @@ -107,29 +109,53 @@ public class UnitController : MonoBehaviour/*, Interactable*/ public virtual void Initialize( GameObject obj , string folder) { unitObj = obj; - m_Folder = folder; + unitComponents = new List(); - unitRender = gameObject.GetOrAddComponent(); - unitRender.Initialize(); + Initialize(); + + OnPostInitailize(); + } - unitSkill = gameObject.GetOrAddComponent(); - unitSkill.Initialize(); + protected virtual void Initialize() + { + unitSkill = GetOrAddUnitComponent(); + unitSkill.Initialize(); - unitRootMotion = gameObject.GetOrAddComponent(); - unitRootMotion.Initialize(); + unitRootMotion = GetOrAddUnitComponent(); + unitRootMotion.Initialize(); - unitCollider = gameObject.GetOrAddComponent(); + unitCollider = GetOrAddUnitComponent(); unitCollider.Initialize(); - unitBody = gameObject.GetOrAddComponent(); + unitBody = GetOrAddUnitComponent(); unitBody.Initialize(); + unitRender = GetOrAddUnitComponent(); + unitRender.Initialize(); + unitDetail = gameObject.GetComponentInChildren(); + } - } + private void OnPostInitailize() + { + if (unitComponents == null) + return; + for(int i = 0; i < unitComponents.Count; ++i) + { + unitComponents[i].OnPostInitialize(); + } + } + + protected T GetOrAddUnitComponent() where T : UnitComponent + { + T comp = gameObject.GetOrAddComponent(); + Debug.Assert(unitComponents != null); + unitComponents.Add(comp); + return comp; + } - public virtual void Update() + public virtual void Update() { unitRender.OnUpdate(); unitState.OnUpdate(); -- cgit v1.1-26-g67d0