From 234c25bc8761a4d41bc5b4aa362449cf3e806e13 Mon Sep 17 00:00:00 2001 From: chai Date: Fri, 17 Sep 2021 20:09:19 +0800 Subject: *unit image effect --- .../Scripts/Unit/Controller/MonsterController.cs | 8 ++-- Assets/Scripts/Unit/Controller/PCController.cs | 13 +++--- Assets/Scripts/Unit/Controller/UnitController.cs | 48 +++++++++++++++++----- 3 files changed, 47 insertions(+), 22 deletions(-) (limited to 'Assets/Scripts/Unit/Controller') diff --git a/Assets/Scripts/Unit/Controller/MonsterController.cs b/Assets/Scripts/Unit/Controller/MonsterController.cs index 03756211..22645b47 100644 --- a/Assets/Scripts/Unit/Controller/MonsterController.cs +++ b/Assets/Scripts/Unit/Controller/MonsterController.cs @@ -6,14 +6,14 @@ public class MonsterController : UnitController { public override UnitType type { get { return UnitType.Monster; } } - public override void Initialize(GameObject obj, string folder) + protected override void Initialize() { - base.Initialize(obj, folder); + base.Initialize(); - unitState = gameObject.GetOrAddComponent(); + unitState = GetOrAddUnitComponent(); unitState.Initialize(); - unitAnimation = gameObject.GetOrAddComponent(); + unitAnimation = GetOrAddUnitComponent(); unitAnimation.Initialize(); } diff --git a/Assets/Scripts/Unit/Controller/PCController.cs b/Assets/Scripts/Unit/Controller/PCController.cs index ea07fc56..4c665e7a 100644 --- a/Assets/Scripts/Unit/Controller/PCController.cs +++ b/Assets/Scripts/Unit/Controller/PCController.cs @@ -19,22 +19,21 @@ public class PCController : UnitController instance = this; } - public override void Initialize(GameObject obj, string folder) + protected override void Initialize() { - base.Initialize(obj, folder); + base.Initialize(); - unitState = gameObject.GetOrAddComponent(); + unitState = GetOrAddUnitComponent(); unitState.Initialize(); - unitAnimation = gameObject.GetOrAddComponent(); + unitAnimation = GetOrAddUnitComponent(); unitAnimation.Initialize(); - unitAfterImage = gameObject.GetOrAddComponent(); + unitAfterImage = GetOrAddUnitComponent(); unitAfterImage.Initialize(); - unitImageEffect = gameObject.GetOrAddComponent(); + unitImageEffect = GetOrAddUnitComponent(); unitImageEffect.Initialize(); - } public override void Update() 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