using System.Collections; using System.Collections.Generic; using UnityEngine; /// /// 注意:尽量用协程代替动画,直接用动画同步会出现各客户端动画播放不一致的情况。 /// public class FunctionSync_Animator : OneValueSyncObject { Animator anim; List state = new List(); string currentTriger; private void Start() { Init(); } public void Init() { if (!hasInit) { anim = GetComponent(); InitDynamic("animator" + gameObject.name, CallBack, ValueType.String); } } public void SetAnimatorState(string TriggerParameter) { if (!state.Contains(mystring)) { state.Add(mystring); } currentTriger = mystring; anim.SetTrigger(TriggerParameter); mystring = TriggerParameter; SendSync(); } /// /// 回调 /// /// private void CallBack(string id,bool isEnterRoom) { if(!state.Contains(mystring)) { state.Add(mystring); currentTriger = mystring; anim.SetTrigger(mystring); Debug.Log("动画同步:" + id + "," + mystring); } else { if (currentTriger!=mystring) { currentTriger = mystring; anim.SetTrigger(mystring); Debug.Log("动画同步:" + id + "," + mystring); } } } }