using System.Collections; using System.Collections.Generic; using UnityEngine; public class TestErika : MonoBehaviour { public UnitActionData actionData; // 动作配置 public GameObject unitControllerPrefab; public GameObject unitPrefab; public RuntimeAnimatorController animController; public string unitFolder; [HideInInspector] public GameObject unit; [HideInInspector] public GameObject unitController; private void Awake() { unitController = GameObject.Instantiate(unitControllerPrefab); unitController.transform.position = Vector3.zero; unitController.transform.rotation = Quaternion.identity; unit = GameObject.Instantiate(unitPrefab); unit.transform.SetParent(unitController.transform); Init(); } private void Init() { UnitController unitCtr = unitController.GetOrAddComponent(); unitCtr.Initialize(unit, "Assets/Bundle/Unit/PC/Erika/"); UnitRootMotion unitRootMotion = unitCtr.unitRootMotion; RootMotionProxy rootMotionProxy = unit.GetOrAddComponent(); Animator animator = unit.GetComponent(); AnimatorOverrideController animCtr = new AnimatorOverrideController(animController); animCtr.name = unitPrefab.name + " Override Controller"; animator.runtimeAnimatorController = animCtr; //foreach(var action in actionData.actions) //{ // animCtr[action.Key.ToString()] = action.Value; //} unitCtr.unitState.ChangeState(UnitState.EUnitState.Idle, new UnitState.IdleParam(), true); //unitCtr.unitRootMotion.SetUpRootMotion(unitFolder, actionData); } }