using System.Collections; using System.Collections.Generic; using UnityEngine; public interface Interactable { void OnHit(); void OnHurt(); void OnGrab(); } public class UnitController : MonoBehaviour, Interactable { // 角色共有的组件 public UnitRender unitRender; public UnitState unitState; public UnitAnimation unitAnimation; public UnitSkill unitSkill; public UnitRootMotion unitRootMotion; public UnitCollider unitCollider; public GameObject unitObj; // 角色模型 public bool isTowardRight { get { return transform.rotation.eulerAngles.y == 0 ? true : false; } } public virtual bool isOnGround { get { return transform.position.y <= 0f; } } public bool isInAir { get { return !isOnGround; } } private string m_Folder; public string folder { get { return m_Folder; } } public virtual void Initialize( GameObject obj , string folder) { unitObj = obj; m_Folder = folder; unitRender = gameObject.GetOrAddComponent(); unitRender.Initialize(); unitState = gameObject.GetOrAddComponent(); unitState.Initialize(); unitAnimation = gameObject.GetOrAddComponent(); unitAnimation.Initialize(); unitSkill = gameObject.GetOrAddComponent(); unitSkill.Initialize(); unitRootMotion = gameObject.GetOrAddComponent(); unitRootMotion.Initialize(); unitCollider = gameObject.GetOrAddComponent(); unitCollider.Initialize(); } public virtual void Update() { unitRender.OnUpdate(); unitState.OnUpdate(); unitAnimation.OnUpdate(); unitSkill.OnUpdate(); unitRootMotion.OnUpdate(); } public void OnHit() { throw new System.NotImplementedException(); } public void OnHurt() { throw new System.NotImplementedException(); } public void OnGrab() { throw new System.NotImplementedException(); } }