Ребят, может не в тему, но вопрос задам:
На базе исходников
Networking Example, а именно Third Person.unity пробую синхронизировать анимации персонажа, методом OnSerializeNetworkView().
вот скрипт на синхронизацию анимации:
Используется csharp
using UnityEngine;
using System.Collections;
using System;
public class NetworkSyncAnimation : MonoBehaviour {
public enum AniStates
{
Walk,
Idle,
Run,
Jump,
Sit_Down,
Sleep,
Eat
}
public AniStates currentAnimation = AniStates.Idle;
public AniStates lastAnimation = AniStates.Idle;
public void <span style="color: #ff0000">SyncAnimation</span>(String animationValue)
{
currentAnimation = (AniStates)Enum.Parse(typeof(AniStates), animationValue);
Debug.Log(currentAnimation);
}
void Update () {
if (lastAnimation != currentAnimation)
{
lastAnimation = currentAnimation;
animation.CrossFade(Enum.GetName(typeof(AniStates), currentAnimation));
animation["Run"].normalizedSpeed = 1.0F;
animation["Walk"].normalizedSpeed = 1.0F;
}
}
void OnSerializeNetworkView(BitStream stream, NetworkMessageInfo info)
{
if (stream.isWriting)
{
char ani = (char)currentAnimation;
stream.Serialize(ref ani);
}
else
{
char ani = (char)0;
stream.Serialize(ref ani);
currentAnimation = (AniStates)ani;
}
}
Сама анимация вызывается из другого скрипта, на этом же объекте, примерно так
SendMessage("SyncAnimation", "Idle");проблем с анимацией и передвижением в не сетевой версии нет, анимация проигрывается, персонаж бегает,
но по каким то неведомым причинам анимация на сетевом объекте проигрывается не хочет, положение тела в пространстве и его поворот отслеживаются.
Пожалуйста, помогите решить проблему.