diff options
author | chai <chaifix@163.com> | 2021-09-17 20:09:19 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2021-09-17 20:09:19 +0800 |
commit | 234c25bc8761a4d41bc5b4aa362449cf3e806e13 (patch) | |
tree | 69cc0b7002ac8018af1806de366526dfc089d49e /Assets/Scripts/Unit/Controller | |
parent | ea4624fbef6e9d8f58da12be363807eb19a37b53 (diff) |
*unit image effect
Diffstat (limited to 'Assets/Scripts/Unit/Controller')
-rw-r--r-- | Assets/Scripts/Unit/Controller/MonsterController.cs | 8 | ||||
-rw-r--r-- | Assets/Scripts/Unit/Controller/PCController.cs | 13 | ||||
-rw-r--r-- | Assets/Scripts/Unit/Controller/UnitController.cs | 48 |
3 files changed, 47 insertions, 22 deletions
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<MonsterState>();
+ unitState = GetOrAddUnitComponent<MonsterState>();
unitState.Initialize();
- unitAnimation = gameObject.GetOrAddComponent<MonsterAnimation>();
+ unitAnimation = GetOrAddUnitComponent<MonsterAnimation>();
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<PCState>();
+ unitState = GetOrAddUnitComponent<PCState>();
unitState.Initialize();
- unitAnimation = gameObject.GetOrAddComponent<PCAnimation>();
+ unitAnimation = GetOrAddUnitComponent<PCAnimation>();
unitAnimation.Initialize();
- unitAfterImage = gameObject.GetOrAddComponent<UnitAfterImage>();
+ unitAfterImage = GetOrAddUnitComponent<UnitAfterImage>();
unitAfterImage.Initialize();
- unitImageEffect = gameObject.GetOrAddComponent<UnitImageEffect>();
+ unitImageEffect = GetOrAddUnitComponent<UnitImageEffect>();
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<UnitComponent> 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<UnitComponent>();
- unitRender = gameObject.GetOrAddComponent<UnitRender>();
- unitRender.Initialize();
+ Initialize();
+
+ OnPostInitailize();
+ }
- unitSkill = gameObject.GetOrAddComponent<UnitSkill>();
- unitSkill.Initialize();
+ protected virtual void Initialize()
+ {
+ unitSkill = GetOrAddUnitComponent<UnitSkill>();
+ unitSkill.Initialize();
- unitRootMotion = gameObject.GetOrAddComponent<UnitRootMotion>();
- unitRootMotion.Initialize();
+ unitRootMotion = GetOrAddUnitComponent<UnitRootMotion>();
+ unitRootMotion.Initialize();
- unitCollider = gameObject.GetOrAddComponent<UnitCollider>();
+ unitCollider = GetOrAddUnitComponent<UnitCollider>();
unitCollider.Initialize();
- unitBody = gameObject.GetOrAddComponent<UnitBody>();
+ unitBody = GetOrAddUnitComponent<UnitBody>();
unitBody.Initialize();
+ unitRender = GetOrAddUnitComponent<UnitRender>();
+ unitRender.Initialize();
+
unitDetail = gameObject.GetComponentInChildren<UnitDetail>();
+ }
- }
+ private void OnPostInitailize()
+ {
+ if (unitComponents == null)
+ return;
+ for(int i = 0; i < unitComponents.Count; ++i)
+ {
+ unitComponents[i].OnPostInitialize();
+ }
+ }
+
+ protected T GetOrAddUnitComponent<T>() where T : UnitComponent
+ {
+ T comp = gameObject.GetOrAddComponent<T>();
+ Debug.Assert(unitComponents != null);
+ unitComponents.Add(comp);
+ return comp;
+ }
- public virtual void Update()
+ public virtual void Update()
{
unitRender.OnUpdate();
unitState.OnUpdate();
|