using System.Collections; using System.Collections.Generic; using UnityEngine; using WK.Data; namespace WK { public class CharacterBuilder { protected GameObject m_Root; protected CharacterMetadata m_Metadata; public PlayerController Build(CharacterMetadata metadata) { m_Metadata = metadata; PlayerController controller = BuildPhase_Controller(); m_Root = BuildPhase_RootGameObject(); controller.SetGameObject(m_Root); CharacterBehaviour behaviour = BuildPhase_Behaviour(); controller.SetBehaviour(behaviour); return controller; } protected virtual GameObject BuildPhase_RootGameObject() { GameObject go = new GameObject(); TransformUtils.ResetLocal(go.transform); go.name = m_Metadata.uid; GameObject prefab = ResourceManager.Instance.LoadAssetFullPath(m_Metadata.prefab); GameObject model = GameObject.Instantiate(prefab); model.transform.SetParent(go.transform); return go; } protected virtual CharacterBehaviour BuildPhase_Behaviour() { CharacterBehaviour behaviour = CommonFunction.CreateInstance(m_Metadata.behaviour) as CharacterBehaviour; return behaviour; } protected virtual PlayerController BuildPhase_Controller() { return null; } } }