public override void InitializeByRespond(S2C_SYNC_NEW_HERO respond) { InitBaseProperty(respond); m_CfgEternityProxy = (CfgEternityProxy)GameFacade.Instance.RetrieveProxy(ProxyName.CfgEternityProxy); ServerListProxy serverListProxy = GameFacade.Instance.RetrieveProxy(ProxyName.ServerListProxy) as ServerListProxy; m_IsMain = respond.ownerPlayerID == serverListProxy.GetCurrentCharacterVO().UId; if (m_IsMain) { GameplayProxy gameplayProxy = GameFacade.Instance.RetrieveProxy(ProxyName.GameplayProxy) as GameplayProxy; gameplayProxy.SetMainPlayerUID(respond.id); gameplayProxy.SetCurrentAreaUid(respond.area_id); } if (respond.item_tid != 0) { CfgEternityProxy cfgEternityProxy = GameFacade.Instance.RetrieveProxy(ProxyName.CfgEternityProxy) as CfgEternityProxy; m_AssetName = cfgEternityProxy.GetItemModelAssetNameByKey(respond.item_tid); } if (respond.ownerPlayerID != 0) { m_HeroType = KHeroType.htPlayer; if (m_IsMain) { Interaction.InteractionManager.GetInstance().RegisterOwnerPlayer(this); } m_Player = m_CfgEternityProxy.GetPlayerByItemTId((int)GetItemID()); } else { m_NpcTmpVO = (GameFacade.Instance.RetrieveProxy(ProxyName.CfgEternityProxy) as CfgEternityProxy).GetNpcByKey((uint)respond.templateID); m_HeroType = (KHeroType)m_NpcTmpVO.NpcType; m_TeleportId = respond.teleport_id_; if (m_NpcTmpVO.Function.HasValue || m_TeleportId > 0) { Interaction.InteractionManager.GetInstance().RegisterInteractable(this); //NetworkManager.Instance.GetTaskController().SendRequetNpcCanAcceptTaskInfo(respond.templateID); } if (m_NpcTmpVO.InteractionDelay > 0) { m_IsActive = false; UIManager.Instance.StartCoroutine(Excute(m_NpcTmpVO.InteractionDelay, () => { m_IsActive = true; })); } else { m_IsActive = true; } } transform.name += "_" + m_HeroType.ToString(); m_MovementRotationTransform = new GameObject("Rotation").transform; m_MovementRotationTransform.SetParent(transform); m_BornServerPosition = new Vector3(respond.posX, respond.posY, respond.posZ); SetLocalPosition(m_BornServerPosition); m_BornServerRotation = new Quaternion(respond.faceDirX, respond.faceDirY, respond.faceDirZ, respond.faceDirW); SetMovementLocalRotation(m_BornServerRotation); if (m_IsMain) { CameraManager.GetInstance().GetMainCamereComponent().SetFollowAndLookAtCMFreeLookAxisValue(MainCameraComponent.CMType.Character, transform, transform, m_BornServerRotation.eulerAngles.y, 0.5f); CameraManager.GetInstance().GetMainCamereComponent().RequestChangeCM(MainCameraComponent.CMType.Character); transform.name += "(Self)"; #if ENABLE_SYNCHRONOUS_HUMAN_SELF_LOG FightLogToFile.Instance.Write("===== InitializeByRespond =====\n"); FightLogToFile.Instance.Write("time " + Utils.Timer.ClockUtil.Instance().GetMillisecond() + "\n"); FightLogToFile.Instance.WriteToJson("S2C_SYNC_NEW_HERO", respond); FightLogToFile.Instance.Write("\n"); #endif } if (m_HeroType == KHeroType.htPlayer) { //音效组合,Listener 的目标 if (m_Player.HasValue) { WwiseUtil.LoadSoundCombo(m_Player.Value.MusicComboID); } } int humanLayer = m_HeroType == KHeroType.htPlayer ? IsMain() ? GameConstant.LayerTypeID.MainPlayer : GameConstant.LayerTypeID.HumanOtherPlayer : GameConstant.LayerTypeID.HumanNPC; LayerUtil.SetGameObjectToLayer(gameObject, humanLayer, true); m_AttManager = new AttributeManager(); InitAttManager(); }