protected override void OnUpdate() { //TODO:控制刷新或请求频率 var requestArray = RequestGroup.ToComponentDataArray <RoleLooksNetRequest>(Allocator.TempJob); if (requestArray.Length == 0) { requestArray.Dispose(); return; } var requestEntityArray = RequestGroup.ToEntityArray(Allocator.TempJob); // Copy requests as spawning will invalidate Group var requests = new RoleLooksNetRequest[requestArray.Length]; for (var i = 0; i < requestArray.Length; i++) { requests[i] = requestArray[i]; PostUpdateCommands.DestroyEntity(requestEntityArray[i]); } for (var i = 0; i < requests.Length; i++) { SprotoType.scene_get_role_look_info.request req = new SprotoType.scene_get_role_look_info.request(); req.uid = requests[i].roleUid; Entity owner = requests[i].owner; if (!EntityManager.Exists(owner)) { continue; } UnityMMO.NetMsgDispatcher.GetInstance().SendMessage <Protocol.scene_get_role_look_info>(req, (_) => { SprotoType.scene_get_role_look_info.response rsp = _ as SprotoType.scene_get_role_look_info.response; // Debug.Log("rsp.result : "+rsp.result.ToString()+" owner:"+owner.ToString()); if (rsp.result == UnityMMO.GameConst.NetResultOk) { RoleMgr.GetInstance().SetName(req.uid, rsp.role_looks_info.name); if (m_world.GetEntityManager().HasComponent <HealthStateData>(owner)) { var hpData = m_world.GetEntityManager().GetComponentData <HealthStateData>(owner); hpData.CurHp = rsp.role_looks_info.hp; hpData.MaxHp = rsp.role_looks_info.max_hp; m_world.GetEntityManager().SetComponentData <HealthStateData>(owner, hpData); } bool hasTrans = m_world.GetEntityManager().HasComponent <Transform>(owner); if (hasTrans) { var transform = m_world.GetEntityManager().GetComponentObject <Transform>(owner); //因为是异步操作,等后端发送信息过来时PostUpdateCommands已经失效了,所以不能这么用 RoleLooksSpawnRequest.Create(m_world.GetEntityManager(), (int)rsp.role_looks_info.career, transform.localPosition, transform.localRotation, owner, (int)rsp.role_looks_info.body, (int)rsp.role_looks_info.hair); } } }); } requestEntityArray.Dispose(); requestArray.Dispose(); }
protected override void OnUpdate() { //TODO:控制刷新或请求频率 var requestArray = RequestGroup.GetComponentDataArray <RoleLooksNetRequest>(); if (requestArray.Length == 0) { return; } var requestEntityArray = RequestGroup.GetEntityArray(); // Copy requests as spawning will invalidate Group var requests = new RoleLooksNetRequest[requestArray.Length]; for (var i = 0; i < requestArray.Length; i++) { requests[i] = requestArray[i]; PostUpdateCommands.DestroyEntity(requestEntityArray[i]); } for (var i = 0; i < requests.Length; i++) { SprotoType.scene_get_role_look_info.request req = new SprotoType.scene_get_role_look_info.request(); req.uid = requests[i].roleUid; Entity owner = requests[i].owner; UnityMMO.NetMsgDispatcher.GetInstance().SendMessage <Protocol.scene_get_role_look_info>(req, (_) => { SprotoType.scene_get_role_look_info.response rsp = _ as SprotoType.scene_get_role_look_info.response; Debug.Log("rsp.result : " + rsp.result.ToString() + " owner:" + owner.ToString()); if (rsp.result == UnityMMO.GameConst.NetResultOk) { bool hasRoleState = m_world.GetEntityManager().HasComponent <RoleState>(owner); if (hasRoleState) { RoleState roleState = m_world.GetEntityManager().GetComponentObject <RoleState>(owner); Debug.Log("roleState.position : " + roleState.transform.localPosition.ToString()); //因为是异步操作,等后端发送信息过来时PostUpdateCommands已经失效了,所以不能这么用 // RoleLooksSpawnRequest.Create(PostUpdateCommands, (int)rsp.role_looks_info.career, roleState.transform.localPosition, roleState.transform.localRotation, owner, (int)rsp.role_looks_info.body, (int)rsp.role_looks_info.hair); RoleLooksSpawnRequest.Create(m_world.GetEntityManager(), (int)rsp.role_looks_info.career, roleState.transform.localPosition, roleState.transform.localRotation, owner, (int)rsp.role_looks_info.body, (int)rsp.role_looks_info.hair); } } }); } }