summaryrefslogtreecommitdiff
path: root/WorldlineKeepers/Assets/Scripts/Unit/Characters
diff options
context:
space:
mode:
authorchai <215380520@qq.com>2023-06-30 19:20:16 +0800
committerchai <215380520@qq.com>2023-06-30 19:20:16 +0800
commit7de061b5595c3b849c3e010ed7c7deed9ce7a1ff (patch)
treebe6305a7db6645b865ecc3073ff121222ae4241b /WorldlineKeepers/Assets/Scripts/Unit/Characters
parent6dbca86d957f774059068b8dbe01170d71cb0e8f (diff)
Diffstat (limited to 'WorldlineKeepers/Assets/Scripts/Unit/Characters')
-rw-r--r--WorldlineKeepers/Assets/Scripts/Unit/Characters/Berserker/BerserkerBuilder.cs4
-rw-r--r--WorldlineKeepers/Assets/Scripts/Unit/Characters/CharacterBuilder.cs29
-rw-r--r--WorldlineKeepers/Assets/Scripts/Unit/Characters/CharacterMetadata.cs5
-rw-r--r--WorldlineKeepers/Assets/Scripts/Unit/Characters/PlayerController.cs19
4 files changed, 43 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();
}
}