NewN_UAVPlane/Assets/Zion/Scripts/Sync1/FunctionSync_Animator.cs

64 lines
1.5 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 注意:尽量用协程代替动画,直接用动画同步会出现各客户端动画播放不一致的情况。
/// </summary>
public class FunctionSync_Animator : OneValueSyncObject
{
Animator anim;
List<string> state = new List<string>();
string currentTriger;
private void Start()
{
Init();
}
public void Init()
{
if (!hasInit)
{
anim = GetComponent<Animator>();
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();
}
/// <summary>
/// 回调
/// </summary>
/// <param name="id"></param>
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);
}
}
}
}