示例#1
0
    /// <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);
    }
示例#2
0
    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();
    }
示例#3
0
    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);
    }
示例#4
0
        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);
        }
示例#5
0
        /////////////////////////////////////////////////////////////////////////////////////////////////////////////////

        /// <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();
        }
示例#6
0
    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);
            }
        }
    }