/// <summary> /// 模型加载完成,设置初始状态 /// </summary> private void SetPrepareData(GameModelData info) { CharacterCommon member = null; member = GameManager.instance.memberGroup[info.userIndex]; member.SetPosition(SerializeHelper.BackVector(info.pos)); //member.SetRotate(SerializeHelper.BackVector(info.rotate)); member.SetAnimation(info.animation); }
public RoomActor(int roomID, int uniqueID, Register register, TeamType myTeam) { Register = register; RoomID = roomID; UniqueID = uniqueID; //记录加入此房间的站位 MyTeam = myTeam; MyModelInfo = new GameModelData() { userIndex = uniqueID }; timerDead = null; this.InitActor(); }
public void SetOriginal() { Debug.Log("播放死亡动画,设置到初始位置."); GameModelData info = new GameModelData() { userIndex = myIndex, pos = (NetVector3)GameTypeManager.BackStandPos(DataController.instance.MyRoomInfo.RoomType, myIndex), rotate = new NetVector3(0, GameTypeManager.BackLookAt(DataController.instance.MyRoomInfo.RoomType, myIndex), 0), animation = 0 }; SetPosition(SerializeHelper.BackVector(info.pos)); SetRotate(SerializeHelper.BackVector(info.rotate)); SetAnimation(info.animation); }
public static void excute() { //创建实例 GameModelDataHolder go = ScriptableObject.CreateInstance <GameModelDataHolder>(); ModelDataProcess.excute(); ModelDic dictModelData = ModelDataProcess._dicModelData; foreach (KeyValuePair <string, ModelData> kvp in dictModelData) { GameModelData pData = new GameModelData(); pData._strAssetName = kvp.Value._strAssetName; pData._strAnimationAssetName = kvp.Value._strAnimationAssetName; pData._strModelName = kvp.Value._strModelName; pData._listAnimEvents = kvp.Value._listAnimEvents; pData._listModelBps = kvp.Value._listModelBps; pData._listAnimations = kvp.Value._listAnimations; pData.nColliderType = kvp.Value._nColliderType; pData.nColliderParams = kvp.Value._nColliderParams; pData.colliderCenter = kvp.Value._nColliderCenter; Debug.Log(kvp.Key); go._listGameModel.Add(pData); } //生成asset string p = "Assets/Resources/GameModelData/GameModelData.asset"; AssetDatabase.CreateAsset(go, p); string assetbundle_path = GameDataAssetbundlePath + IPath.getPlatformName() + "/modelsassetbundles"; //创建路径 if (!Directory.Exists(assetbundle_path)) { Directory.CreateDirectory(assetbundle_path); } //打包 UnityEngine.Object o = AssetDatabase.LoadAssetAtPath(p, typeof(GameModelDataHolder)); BuildPipeline.BuildAssetBundle(o, null, assetbundle_path + "/gamemodeldata.assetbundle", EditorVariables.eBuildABOpt, EditorVariables.eBuildTarget); //删除临时的asset //AssetDatabase.DeleteAsset(p); }
///////////////////////////////////////////////////////////////////////////////////////////////////////////////// /// <summary> /// 加载 /// </summary> public void load() { if (_strModelID.Length == 0) { return; } _pObjModelData = PlayerManager.ModelData.getGameModelData(_strModelID); if (_pObjModelData == null) { //Utils.LogSys.LogWarning("Model config data is missed. " + _strModelID); return; } //获取数据 _listBindPoints = _pObjModelData._listModelBps; _listAnimEvent = _pObjModelData._listAnimEvents; _listAnimations = _pObjModelData._listAnimations; //获取模型部件列表 //模型 = 部件加载 + 部件组装 + 材质 ElementConfig cfg = (ElementConfig)ConfigDataMgr.getInstance().GetData(ConfigDataType.ModelElementConfig); ElementConfigItem modelData = cfg.GetDataByKey(_strModelID); if (modelData == null) { Utils.LogSys.LogWarning(" ElementConfigItem is null " + _strModelID); } string strLev = levToWeaponAndMaterialIdx(); List <string> listTemp = new List <string>(); for (int i = 0; i < modelData.getKeys().Count; i++) { var strKey = modelData.getKeys()[i]; if (strKey == "key") { continue; } if (!(bool)modelData[strKey]) { continue; } var strComponent = strKey.ToLower().Contains("weapon") && strLev != "" ? strKey + "_" + strLev : strKey; //忽略部件不创建 if (!_listIgnoreComponents.Contains(strComponent)) { _listUncomplete.Add(strComponent); listTemp.Add(strComponent); } } for (int i = 0; i < listTemp.Count; i++) { string strKey = listTemp[i]; _listElement.Add(new ModelElement(strKey, strKey, _strModelID, this)); } loadBaseElement(); }
public void Update() { if (serverEventTCP.Count > 0) { MessageXieYi xieyi = serverEventTCP.Dequeue(); if (xieyi == null) { Debug.LogError("有事件操作的协议为空?"); return; } if ((MessageConvention)xieyi.XieYiFirstFlag == MessageConvention.login) { ErrorType error = ClassGroup.CheckIsError(xieyi); if (error != ErrorType.none) { ErrorShow(error); } else { SocketManager.instance.GetBeatTime(); } } if ((MessageConvention)xieyi.XieYiFirstFlag == MessageConvention.getHeartBeatTime) { ErrorType error = ClassGroup.CheckIsError(xieyi); if (error != ErrorType.none) { Debug.LogError(error); } else { SocketManager.instance.OpenHeartbeat(); // UILogin.Close(); HomeUI.Show(); // Debug.Log("自身检查是否需要重连。"); SocketManager.instance.SendSave((byte)MessageConvention.reConnectCheck, new byte[] { }, false); } } if ((MessageConvention)xieyi.XieYiFirstFlag == MessageConvention.reConnectCheck) { ErrorType error = ClassGroup.CheckIsError(xieyi); if (error != ErrorType.none) { Debug.LogError(error); } else { ReconnctInfo rcInfo = SerializeHelper.Deserialize <ReconnctInfo>(xieyi.MessageContent); if (rcInfo.isReconnect) { CurrentPlayType = FramePlayType.断线重连; ReConnectUI.Show(); } else { CurrentPlayType = FramePlayType.游戏未开始; } } } if ((MessageConvention)xieyi.XieYiFirstFlag == MessageConvention.quitRoom)//自己退出房间 { QuitInfo qInfo = SerializeHelper.Deserialize <QuitInfo>(xieyi.MessageContent); if (qInfo.isQuit) { UpdateMemberHide(); RoomUI.Close(); HomeUI.Show(); if (qInfo.userIndex != DataController.instance.MyLocateIndex) { UIManager.instance.ShowAlertTip("您被踢出房间。"); } } else { if (qInfo.userIndex == qInfo.quitUnique) { UIManager.instance.ShowAlertTip("退出房间失败。"); } } } if ((MessageConvention)xieyi.XieYiFirstFlag == MessageConvention.updateActorState) { ErrorType error = ClassGroup.CheckIsError(xieyi); if (error != ErrorType.none) { Debug.LogError(error); } else { CheckState(xieyi); } } if ((MessageConvention)xieyi.XieYiFirstFlag == MessageConvention.updateModelInfo) { GameModelData modelDate = SerializeHelper.Deserialize <GameModelData>(xieyi.MessageContent); SetPrepareData(modelDate); } if ((MessageConvention)xieyi.XieYiFirstFlag == MessageConvention.getPreGameData) { ErrorType error = ClassGroup.CheckIsError(xieyi); if (error != ErrorType.none) { Debug.LogError(error); } else { Debug.Log("验证本客户端收到游戏前准备数据。客户端响应已收到:" + xieyi.MessageContentLength); SendState(RoomActorState.WaitForStart); } } if ((MessageConvention)xieyi.XieYiFirstFlag == MessageConvention.startGaming) { ErrorType error = ClassGroup.CheckIsError(xieyi); if (error != ErrorType.none) { Debug.LogError(error); } else { StartGaming(); } } if ((MessageConvention)xieyi.XieYiFirstFlag == MessageConvention.endGaming) { ErrorType error = ClassGroup.CheckIsError(xieyi); if (error != ErrorType.none) { Debug.LogError(error); } else { EndGaming(xieyi); } } if ((MessageConvention)xieyi.XieYiFirstFlag == MessageConvention.frameData) { Debug.LogError("TCP收到整串操作数据"); UDPManager.instance.DealFrameData(xieyi); if (CurrentPlayType == FramePlayType.断线重连) { CurrentPlayType = FramePlayType.游戏中; } if (CurrentPlayType == FramePlayType.主动请求数据) { CurrentPlayType = FramePlayType.游戏中; } } } //UDP if (serverEventUDP.Count > 0) { MessageXieYi xieyi = serverEventUDP.Dequeue(); if (xieyi == null) { Debug.LogError("有UDP事件操作的协议为空?"); return; } if (xieyi.XieYiFirstFlag == (byte)MessageConvention.setUDP) { UDPManager.instance.IsConnect = true; Debug.LogError("用tcp 设置房间 udp"); //SocketManager.instance.SendSave((byte)MessageConvention.setUDP, xieyi.MessageContent, false); } } }