public override void NetworkAttribute(GCPlayerCmd cmd) { var info = cmd.AvatarInfo; if (attr == null) { attr = GetComponent <NpcAttribute>(); } Log.Net("OtherSync: " + info); if (info == null) { Debug.LogError("NetMatchInfo is Null "); return; } NetworkMove(info); //服务器通知瞬间传送位置 if (info.ResetPos) { if (aiBase != null) { aiBase.GetAI().ChangeState(AIStateEnum.IDLE); } var netPos = MobaUtil.FloatPos(info); transform.position = netPos; positions.Clear(); } if (info.HasTeamColor) { attr.SetTeamColorNet(info.TeamColor); curInfo.TeamColor = info.TeamColor; } if (info.HasIsMaster) { attr.SetIsMasterNet(info.IsMaster); curInfo.IsMaster = info.IsMaster; } var dataChanged = false; var skillCount = curInfo.KillCount; if (info.HasKillCount) { skillCount = info.KillCount; curInfo.KillCount = info.KillCount; dataChanged = true; } var deadCount = curInfo.DeadCount; if (info.HasDeadCount) { deadCount = info.DeadCount; curInfo.DeadCount = info.DeadCount; dataChanged = true; } var secondaryAttackCount = curInfo.SecondaryAttackCount; if (info.HasSecondaryAttackCount) { secondaryAttackCount = info.SecondaryAttackCount; curInfo.SecondaryAttackCount = info.SecondaryAttackCount; dataChanged = true; } if (info.HasScore) { curInfo.Score = info.Score; dataChanged = true; } if (dataChanged) { var sid = attr.GetNetView().GetServerID(); ScoreManager.Instance.NetSyncScore(sid, curInfo.Score, sid, skillCount, deadCount, secondaryAttackCount); } if (info.HasContinueKilled) { curInfo.ContinueKilled = info.ContinueKilled; if (curInfo.ContinueKilled > 0) { } } if (info.HasPlayerModelInGame && curInfo.PlayerModelInGame != info.PlayerModelInGame) { curInfo.PlayerModelInGame = info.PlayerModelInGame; GetComponent <MobaModelLoader>().LoadModel(curInfo.PlayerModelInGame); var unitData = Util.GetUnitData(true, curInfo.PlayerModelInGame, 0); attr.SetObjUnitData(unitData); //SkillDataController.skillDataController.InitSkillShotAfterSelectSkill(curInfo.PlayerModelInGame); } if (info.HasHP) { curInfo.HP = info.HP; attr.SetHPNet(info.HP); } if (info.HasLevel) { curInfo.Level = info.Level; attr.ChangeLevel(info.Level); } if (info.HasState) { curInfo.State = info.State; } }
/* * Load From Json File PropertyKey * * No State Code * 根据从服务器加载的角色数据来初始化NpcAttribute 中的数值(后续可能需要调整这种方式) */ IEnumerator InitProperty() { Log.Net("characterinfo init"); NetDebug.netDebug.AddConsole("CharacterInfo:: Init Property " + gameObject.name); CGGetCharacterInfo.Builder getChar = CGGetCharacterInfo.CreateBuilder(); getChar.PlayerId = photonView.GetServerID(); getChar.AddParamKey((int)CharAttribute.CharAttributeEnum.LEVEL); getChar.AddParamKey((int)CharAttribute.CharAttributeEnum.EXP); getChar.AddParamKey((int)CharAttribute.CharAttributeEnum.GOLD_COIN); getChar.AddParamKey((int)CharAttribute.CharAttributeEnum.JING_SHI); NetDebug.netDebug.AddConsole("GetChar is " + getChar.ParamKeyCount); KBEngine.PacketHolder packet = new KBEngine.PacketHolder(); yield return(StartCoroutine(KBEngine.Bundle.sendSimple(this, getChar, packet))); if (packet.packet.responseFlag == 0) { var info = packet.packet.protoBody as GCGetCharacterInfo; Debug.Log("CharacterInfo::InitProperty " + info); foreach (RolesAttributes att in info.AttributesList) { if (att.AttrKey == (int)CharAttribute.CharAttributeEnum.GOLD_COIN) { Log.Net("attr int " + att.BasicData.Indicate); Log.Net("attr key " + att.BasicData.TheInt32); Log.Net("attr " + att.ToString()); } if (att.BasicData.Indicate == 2) { propertyValue[(CharAttribute.CharAttributeEnum)att.AttrKey] = (int)att.BasicData.TheInt64; } else { propertyValue[(CharAttribute.CharAttributeEnum)att.AttrKey] = att.BasicData.TheInt32; } } } else { Debug.LogError("CharacterInfo::InitProperty Error"); } var m = GetProp(CharAttribute.CharAttributeEnum.GOLD_COIN); Log.Net(m.ToString()); Log.Important("PropertyValue is " + propertyValue); attribute.ChangeLevel(GetProp(CharAttribute.CharAttributeEnum.LEVEL)); attribute.ChangeHP(0); attribute.ChangeMP(0); attribute.ChangeExp(0); Log.Important("Init HP " + attribute.HP); Log.Important("Init Property Over"); initYet = true; NetDebug.netDebug.AddConsole("Init CharacterInfo Over"); Log.Sys("UpdatePlayerData " + attribute.ObjUnitData.Level); var evt = new MyEvent(MyEvent.EventType.UpdatePlayerData); evt.localID = attribute.GetLocalId(); MyEventSystem.myEventSystem.PushEvent(evt); }