public void SyncEnemyAnim(EnemyAnimModel model)  //同步敌人动画
    {
        Dictionary <byte, object> parameters = new Dictionary <byte, object>();

        ParameterTool.AddParameter(parameters, ParameterCode.EnemyAnim, model);
        PhotonEngine.Instance.SendRequest(OpCode, SubCode.SyncEnemyAnim, parameters);
    }
 public void OnSyncEnemyAnim(EnemyAnimModel model)
 {
     foreach (EnemyAnimProperty property in model.list)
     {
         GameObject go;
         bool       isSuccess = enemyDict.TryGetValue(property.guid, out go);
         if (isSuccess)
         {
             Animation anim = go.GetComponent <Animation>();
             if (property.isIdle)
             {
                 anim.Play("idle");
             }
             if (property.isWalk)
             {
                 anim.Play("walk");
             }
             if (property.isAttack)
             {
                 anim.Play("attack01");
             }
             if (property.isTakeDamage)
             {
                 anim.Play("takedamage");
             }
             if (property.isDie)
             {
                 anim.Play("die");
             }
         }
     }
 }
    public override void OnEventData(EventData data)
    {
        SubCode subCode = ParameterTool.GetSubCode(data.Parameters);

        switch (subCode)
        {
        case SubCode.SyncEnemyCreat:
            //Debug.Log("SubCode.CreatEnemy");
            EnemyCreatModel model = ParameterTool.GetParameter <EnemyCreatModel>(data.Parameters, ParameterCode.CreatEnemy);
            OnSyncEnemyCreat(model);
            break;

        case SubCode.SyncPositionAndRotation:
            //Debug.Log("SubCode.SyncPositionAndRotation");
            EnemyPositionModel model2 = ParameterTool.GetParameter <EnemyPositionModel>(data.Parameters, ParameterCode.EnemyPosition);
            OnSyncEnemyPosition(model2);
            break;

        case SubCode.SyncEnemyAnim:
            //Debug.Log("SubCode.SyncPositionAndRotation");
            EnemyAnimModel model3 = ParameterTool.GetParameter <EnemyAnimModel>(data.Parameters, ParameterCode.EnemyAnim);
            OnSyncEnemyAnim(model3);
            break;
        }
    }
    public void SyncEnemyAnim()
    {
        if (syncEnemyAnimList != null && syncEnemyAnimList.Count > 0)
        {
            EnemyAnimModel model = new EnemyAnimModel();
            foreach (Enemy enemy in syncEnemyAnimList)
            {
                Animation         anim     = enemy.GetComponent <Animation>();
                EnemyAnimProperty property = new EnemyAnimProperty
                {
                    guid         = enemy.guid,
                    isIdle       = anim.IsPlaying("idle"),
                    isWalk       = anim.IsPlaying("walk"),
                    isAttack     = anim.IsPlaying("attack01"),
                    isTakeDamage = anim.IsPlaying("takedamage"),
                    isDie        = anim.IsPlaying("die")
                };
                model.list.Add(property);
            }

            enemyController.SyncEnemyAnim(model);
            syncEnemyAnimList.Clear();
        }
    }