diff options
Diffstat (limited to 'WorldlineKeepers/Assets/Scripts/Unit')
6 files changed, 62 insertions, 14 deletions
diff --git a/WorldlineKeepers/Assets/Scripts/Unit/Characters/Berserker/BerserkerBuilder.cs b/WorldlineKeepers/Assets/Scripts/Unit/Characters/Berserker/BerserkerBuilder.cs index 9601783..4887062 100644 --- a/WorldlineKeepers/Assets/Scripts/Unit/Characters/Berserker/BerserkerBuilder.cs +++ b/WorldlineKeepers/Assets/Scripts/Unit/Characters/Berserker/BerserkerBuilder.cs @@ -8,9 +8,9 @@ namespace WK public class BerserkerBuilder : CharacterBuilder { - protected override PlayerController BuildPhaseController() + protected override PlayerController BuildPhase_Controller() { - return base.BuildPhaseController(); + return base.BuildPhase_Controller(); } } diff --git a/WorldlineKeepers/Assets/Scripts/Unit/Characters/CharacterBuilder.cs b/WorldlineKeepers/Assets/Scripts/Unit/Characters/CharacterBuilder.cs index c51d565..3293db4 100644 --- a/WorldlineKeepers/Assets/Scripts/Unit/Characters/CharacterBuilder.cs +++ b/WorldlineKeepers/Assets/Scripts/Unit/Characters/CharacterBuilder.cs @@ -11,29 +11,42 @@ namespace WK protected GameObject m_Root; protected CharacterMetadata m_Metadata; - public GameObject Build(CharacterMetadata metadata) + public PlayerController Build(CharacterMetadata metadata) { m_Metadata = metadata; - m_Root = BuildPhaseRootGameObject(); + PlayerController controller = BuildPhase_Controller(); - return m_Root; + m_Root = BuildPhase_RootGameObject(); + controller.SetGameObject(m_Root); + + CharacterBehaviour behaviour = BuildPhase_Behaviour(); + controller.SetBehaviour(behaviour); + + return controller; } - protected virtual GameObject BuildPhaseRootGameObject() + protected virtual GameObject BuildPhase_RootGameObject() { GameObject go = new GameObject(); + TransformUtils.ResetLocal(go.transform); + go.name = m_Metadata.uid; + + GameObject prefab = ResourceManager.Instance.LoadAssetFullPath<GameObject>(m_Metadata.prefab); + GameObject model = GameObject.Instantiate<GameObject>(prefab); + model.transform.SetParent(go.transform); return go; } - protected virtual PlayerController BuildPhaseController() + protected virtual CharacterBehaviour BuildPhase_Behaviour() { - return null; + CharacterBehaviour behaviour = CommonFunction.CreateInstance(m_Metadata.behaviour) as CharacterBehaviour; + return behaviour; } - protected virtual void BuildPhaseSpriteRenderer() + protected virtual PlayerController BuildPhase_Controller() { - + return null; } } diff --git a/WorldlineKeepers/Assets/Scripts/Unit/Characters/CharacterMetadata.cs b/WorldlineKeepers/Assets/Scripts/Unit/Characters/CharacterMetadata.cs index c8409da..c33e9fc 100644 --- a/WorldlineKeepers/Assets/Scripts/Unit/Characters/CharacterMetadata.cs +++ b/WorldlineKeepers/Assets/Scripts/Unit/Characters/CharacterMetadata.cs @@ -6,6 +6,9 @@ using UnityEngine; namespace WK.Data { + /// <summary> + /// 角色json + /// </summary> public class CharacterMetadata { public string uid; @@ -20,6 +23,8 @@ namespace WK.Data public string level_stats; + public string prefab; + public Dictionary<string, string> extra_data; } diff --git a/WorldlineKeepers/Assets/Scripts/Unit/Characters/PlayerController.cs b/WorldlineKeepers/Assets/Scripts/Unit/Characters/PlayerController.cs index de13acb..0156045 100644 --- a/WorldlineKeepers/Assets/Scripts/Unit/Characters/PlayerController.cs +++ b/WorldlineKeepers/Assets/Scripts/Unit/Characters/PlayerController.cs @@ -5,6 +5,7 @@ using UnityEngine; namespace WK { // 玩家角色数据结构 + // // PlayerController // CharacterInfo // CharacterStats @@ -40,20 +41,30 @@ namespace WK { } + public void SetGameObject(GameObject go) + { + m_GameObject = go; + } + + public void SetBehaviour(CharacterBehaviour behaviour) + { + m_CharacterBehaviour = behaviour; + } + /// <summary> /// 逻辑更新 /// </summary> public void OnUpdate() { // preupdate - behaviour.OnPreUpdate(); + behaviour?.OnPreUpdate(); // update - info.OnUpdate(); - behaviour.OnUpdate(); + info?.OnUpdate(); + behaviour?.OnUpdate(); // post update - behaviour.OnPostUpdate(); + behaviour?.OnPostUpdate(); } } diff --git a/WorldlineKeepers/Assets/Scripts/Unit/Enemies/EnemyBase.cs b/WorldlineKeepers/Assets/Scripts/Unit/Enemies/EnemyBase.cs new file mode 100644 index 0000000..dbc2966 --- /dev/null +++ b/WorldlineKeepers/Assets/Scripts/Unit/Enemies/EnemyBase.cs @@ -0,0 +1,8 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class EnemyBase +{ + +} diff --git a/WorldlineKeepers/Assets/Scripts/Unit/Enemies/EnemyBase.cs.meta b/WorldlineKeepers/Assets/Scripts/Unit/Enemies/EnemyBase.cs.meta new file mode 100644 index 0000000..6d07655 --- /dev/null +++ b/WorldlineKeepers/Assets/Scripts/Unit/Enemies/EnemyBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7a3b6053f1824a04bb95605f81d5d5fb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: |