Ejemplo n.º 1
0
    /// <summary>
    /// 创建动作特效
    /// </summary>
    /// <param name="actionID"></param>
    /// <param name="npcID"></param>
    public void CreateActionEffect(int actionID, int npcID)
    {
        StroyActionConfigData actionData = StroyLineConfigManager.Instance.GetStroyActionConfig[actionID];

        Transform npcTrans;

        if (StroyLineDataManager.Instance.GetNpcList.ContainsKey(npcID))
        {
            npcTrans = StroyLineDataManager.Instance.GetNpcList[npcID].transform;
        }
        else
        {
            return;
        }
        Vector3 startPos = npcTrans.TransformPoint(actionData._EffectPosition.z, npcTrans.localPosition.y + actionData._EffectPosition.y, actionData._EffectPosition.x);  //配置表中的X对应3D中的Z,z对应3D中和X,

        if (actionData._EffectGo == null)
        {
            return;
        }
        GameObject actionEffect = GameObjectPool.Instance.AcquireLocal(actionData._EffectGo, startPos, Quaternion.Euler(0, actionData._EffectStartAngle, 0));//Quaternion.Euler(0, rotationY, 0));

        var childs = actionEffect.GetChildTransforms();

        childs.ApplyAllItem(P => P.gameObject.layer = 30);

        StroyActionEffect actionEffectBehaviour = actionEffect.GetComponent <StroyActionEffect>();

        if (actionEffectBehaviour == null)
        {
            actionEffectBehaviour = actionEffect.AddComponent <StroyActionEffect>();
        }

        actionEffectBehaviour.InitDataConfig(actionData._EffectLoopTimes);
    }
Ejemplo n.º 2
0
        void OkEvent(GameObject go)
        {
            HidePanel();
            switch (m_createType)
            {
            case CreateType.STROYLINE:
                StroyLineConfigData stroyline = new StroyLineConfigData();
                CreateStroyLine(stroyline);
                break;

            case CreateType.ACTION:
                StroyActionConfigData actionData = new StroyActionConfigData();
                CreateStroyAction(actionData);
                break;

            case CreateType.CAMERACLIP:
                StroyCameraConfigData cameraData = new StroyCameraConfigData();
                CreateStroyCameraClip(cameraData);
                break;

            default:
                break;
            }

            HidePanel();
        }
Ejemplo n.º 3
0
 public void SetActionUiState(StroyActionConfigData actionData)
 {
     m_winType      = WinType.ActionParams;
     m_actionData   = actionData;
     m_curTitleName = "新建动作窗口";
     m_isNewCreate  = true;
     m_isShowWindow = true;
     tooltip        = "";
 }
Ejemplo n.º 4
0
    public StroyActionConfigData Clone()
    {
        StroyActionConfigData tempObj = (StroyActionConfigData)this.MemberwiseClone();

        if (_EffectGo != null)
        {
            tempObj._EffectGo = this._EffectGo;
        }
        return(tempObj);
    }
Ejemplo n.º 5
0
        private void AddSaveAction(StroyActionConfigData actionData)
        {
            if (actionData == null)
            {
                return;
            }

            for (int i = 0; i < EditorDataManager.Instance.StroyActionTempData.Count; i++)
            {
                if (EditorDataManager.Instance.StroyActionTempData[i]._ActionID == actionData._ActionID)
                {
                    EditorDataManager.Instance.StroyActionTempData.RemoveAt(i);
                }
            }

            EditorDataManager.Instance.StroyActionTempData.Add(actionData);
        }
Ejemplo n.º 6
0
 void CreateStroyAction(StroyActionConfigData actionData)
 {
     actionData._ActionID        = 0;
     actionData._ActionName      = "0";
     actionData._ActionType      = 0;
     actionData._Acceleration    = 0;
     actionData._Duration        = 0;
     actionData._EffectGo        = GameObject.CreatePrimitive(PrimitiveType.Sphere);
     actionData._EffectLoopTimes = 0;
     actionData._EffectPosition  = Vector2.zero;
     actionData._EffectStartTime = 0;
     actionData._SoundName       = "0";
     actionData._SoundTime       = 0;
     actionData._Speed           = 0;
     actionData._StartAngle      = 0;
     actionData._StartPosition   = Vector3.zero;
     StroyEditorUIManager.Instance.SetActionUiState(actionData);
 }
Ejemplo n.º 7
0
        /// <summary>
        /// 回退函数
        /// </summary>
        /// <param name="camera">要回退的镜头数据</param>
        /// <param name="action">要回退的动作数据</param>
        public void RestorePreStep(ref StroyCameraConfigData camera, ref StroyActionConfigData action)
        {
            int cameraCount = m_cameraList.Count - 2;

            if (cameraCount >= 0)
            {
                camera._ActionTime = m_cameraList[cameraCount]._ActionTime;
                camera._TargetID   = m_cameraList[cameraCount]._TargetID;
                camera._TargetPos  = m_cameraList[cameraCount]._TargetPos;
                camera._TargetType = m_cameraList[cameraCount]._TargetType;
                for (int i = 0; i < m_cameraList[cameraCount]._Params.Length; i++)
                {
                    camera._Params[i]._EquA = m_cameraList[cameraCount]._Params[i]._EquA;
                    camera._Params[i]._EquB = m_cameraList[cameraCount]._Params[i]._EquB;
                    camera._Params[i]._EquC = m_cameraList[cameraCount]._Params[i]._EquC;
                    camera._Params[i]._EquD = m_cameraList[cameraCount]._Params[i]._EquD;
                }
                m_cameraList.RemoveAt(cameraCount);
            }

            int actionCount = m_actionList.Count - 2;

            if (actionCount >= 0)
            {
                action._Acceleration    = m_actionList[actionCount]._Acceleration;
                action._ActionName      = m_actionList[actionCount]._ActionName;
                action._ActionType      = m_actionList[actionCount]._ActionType;
                action._Duration        = m_actionList[actionCount]._Duration;
                action._EffectLoopTimes = m_actionList[actionCount]._EffectLoopTimes;
                action._EffectPosition  = m_actionList[actionCount]._EffectPosition;
                action._EffectStartTime = m_actionList[actionCount]._EffectStartTime;
                action._SoundName       = m_actionList[actionCount]._SoundName;
                action._SoundTime       = m_actionList[actionCount]._SoundTime;
                action._Speed           = m_actionList[actionCount]._Speed;
                action._StartAngle      = m_actionList[actionCount]._StartAngle;
                action._StartPosition   = m_actionList[actionCount]._StartPosition;
                m_actionList.RemoveAt(actionCount);
            }
        }
Ejemplo n.º 8
0
        /// <summary>
        /// 注册回退操作步骤
        /// </summary>
        /// <param name="camera">要保存的镜头数据</param>
        /// <param name="action">要保存的动作数据</param>
        public void RegPreStep(StroyCameraConfigData camera, StroyActionConfigData action)
        {
            if (m_cameraList.Count > MAX_RESTORESTEP)
            {
                m_cameraList.RemoveAt(0);
            }

            if (m_actionList.Count > MAX_RESTORESTEP)
            {
                m_actionList.RemoveAt(0);
            }

            if (camera != null)
            {
                m_cameraList.Add(camera.Clone());
            }

            if (action != null)
            {
                m_actionList.Add(action.Clone());
            }
        }
Ejemplo n.º 9
0
        void WindowContain(int windowID)
        {
            int width = 140;

            GUI.DragWindow(new Rect(0, 0, width, 30));

            switch (m_winType)
            {
            case WinType.Animation:

                if (tooltip.Length > 0)
                {
                    GUILayout.Label(tooltip, m_guiStyle);
                    m_windowRect.height = (m_curAnimList.Count + 2) * 45;
                }
                else
                {
                    m_windowRect.height = (m_curAnimList.Count + 1) * 45;
                }


                for (int i = 0; i < m_curAnimList.Count; i++)
                {
                    if (GUILayout.Button(m_curAnimList[i].ToString(), GUILayout.Width(width), GUILayout.Height(35)))
                    {
                        if (StroyLineConfigManager.Instance.GetStroyActionConfig.ContainsKey(m_curAnimList[i]))
                        {
                            m_winType = WinType.ActionParams;
                            var curSelectAction = StroyLineConfigManager.Instance.GetStroyActionConfig[m_curAnimList[i]];
                            EditorDataManager.Instance.CurSelectActionData = curSelectAction;
                            m_curTitleName = m_curAnimList[i].ToString() + "动画参数";
                            m_actionData   = EditorDataManager.Instance.CurSelectActionData;
                            tooltip        = "";
                        }
                        else
                        {
                            tooltip = "配置表中无" + m_curAnimList[i] + "相关数据!";
                        }
                    }
                }
                if (GUILayout.Button("关闭", GUILayout.Width(width), GUILayout.Height(35)))
                {
                    m_isShowWindow = false;
                }
                m_windowRect.height = (m_curAnimList.Count + 4) * 25;

                break;

            case WinType.CameraClip:

                int icRow = 0;
                if (tooltip.Length > 0)
                {
                    if (!m_isNewCreate)
                    {
                        if (GUI.Button(new Rect(10, 23 + 2 * 24, width, 25), "关闭"))
                        {
                            m_isShowWindow = false;
                        }
                        GUILayout.Label(tooltip, m_guiStyle);
                        m_windowRect.height = 5 * 25;
                        return;
                    }
                    icRow++;

                    GUILayout.Label(tooltip, m_guiStyle);
                }


                GUI.Label(new Rect(10, 23 + icRow * 24, 52, 25), "目标类型");
                StroyEditorCommand.ReadData(new Rect(65, 23 + icRow * 24, 88, 22), ref m_cameraData._TargetType);

                GUI.Label(new Rect(10, 23 + ++icRow * 24, 60.5f, 25), "目标位置X");
                StroyEditorCommand.ReadData(new Rect(74, 23 + icRow * 24, 78, 22), ref m_cameraData._TargetPos.x);

                GUI.Label(new Rect(10, 23 + ++icRow * 24, 60.5f, 25), "目标位置Y");
                StroyEditorCommand.ReadData(new Rect(74, 23 + icRow * 24, 78, 22), ref m_cameraData._TargetPos.y);

                GUI.Label(new Rect(10, 23 + ++icRow * 24, 52, 25), "目标ID");
                StroyEditorCommand.ReadData(new Rect(65, 23 + icRow * 24, 88, 22), ref m_cameraData._TargetID);

                GUI.Label(new Rect(10, 23 + ++icRow * 24, 52, 25), "偏移X");
                StroyEditorCommand.ReadData(new Rect(65, 23 + icRow * 24, 88, 22), ref m_cameraData._TargetOffset.x);

                GUI.Label(new Rect(10, 23 + ++icRow * 24, 52, 25), "偏移Y");
                StroyEditorCommand.ReadData(new Rect(65, 23 + icRow * 24, 88, 22), ref m_cameraData._TargetOffset.y);

                GUI.Label(new Rect(10, 23 + ++icRow * 24, 52, 25), "偏移Z");
                StroyEditorCommand.ReadData(new Rect(65, 23 + icRow * 24, 88, 22), ref m_cameraData._TargetOffset.z);

                GUI.Label(new Rect(10, 23 + ++icRow * 24, 52, 25), "运动时间");
                StroyEditorCommand.ReadData(new Rect(65, 23 + icRow * 24, 88, 22), ref m_cameraData._ActionTime);

                for (int i = 0; i < m_cameraData._Params.Length; i++)
                {
                    int r = 0;
                    GUI.Label(new Rect(10, 23 + ++icRow * 24, 100, 25), "相机运动参数" + i);
                    StroyEditorCommand.ReadData(new Rect(10, 23 + ++icRow * 24, 35, 22), ref m_cameraData._Params[i]._EquA);
                    StroyEditorCommand.ReadData(new Rect(10 + ++r * 36, 23 + icRow * 24, 35, 22), ref m_cameraData._Params[i]._EquB);
                    StroyEditorCommand.ReadData(new Rect(10 + ++r * 36, 23 + icRow * 24, 35, 22), ref m_cameraData._Params[i]._EquC);
                    StroyEditorCommand.ReadData(new Rect(10 + ++r * 36, 23 + icRow * 24, 35, 22), ref m_cameraData._Params[i]._EquD);
                }


                ++icRow;
                if (m_isNewCreate)
                {
                    if (GUI.Button(new Rect(10, 23 + ++icRow * 24, 65, 25), "取消"))
                    {
                        m_isShowWindow = false;
                        m_isNewCreate  = false;
                    }

                    if (GUI.Button(new Rect(85, 23 + icRow * 24, 65, 25), "保存"))
                    {
                        m_isShowWindow = false;
                        m_isNewCreate  = false;
                        AddSaveCamera(m_cameraData);

                        EditorDataManager.Instance.CurSelectCameraGroup._CameraID.Add(m_cameraData._CameraID);
                        StroyLineConfigManager.Instance.GetCameraConfig.Add(m_cameraData._CameraID, m_cameraData);
                        EditorDataManager.Instance.IsUpdateStroyUI = true;
                    }
                }
                else
                {
                    if (GUI.Button(new Rect(10, 23 + ++icRow * 24, width, 25), "关闭"))
                    {
                        m_isShowWindow = false;
                    }
                }
                m_windowRect.height = (icRow + 2) * 25;

                break;

            case WinType.ActionParams:
                int iRow = 0;
                if (tooltip.Length > 0)
                {
                    iRow++;
                    GUILayout.Label(tooltip, m_guiStyle);
                }
                GUI.Label(new Rect(10, 23 + iRow * 24, 52, 25), "动画名称");
                m_actionData._ActionName = GUI.TextField(new Rect(65, 23 + iRow * 24, 88, 22), m_actionData._ActionName);

                GUI.Label(new Rect(10, 23 + ++iRow * 24, 60.5f, 25), "起始位置X");
                StroyEditorCommand.ReadData(new Rect(74, 23 + iRow * 24, 78, 22), ref m_actionData._StartPosition.x);

                GUI.Label(new Rect(10, 23 + ++iRow * 24, 60.5f, 25), "起始位置Y");
                StroyEditorCommand.ReadData(new Rect(74, 23 + iRow * 24, 78, 22), ref m_actionData._StartPosition.z);

                GUI.Label(new Rect(10, 23 + ++iRow * 24, 52, 25), "动画类型");
                StroyEditorCommand.ReadData(new Rect(65, 23 + iRow * 24, 88, 22), ref m_actionData._ActionType);

                GUI.Label(new Rect(10, 23 + ++iRow * 24, 52, 25), "起始角度");
                StroyEditorCommand.ReadData(new Rect(65, 23 + iRow * 24, 88, 22), ref m_actionData._StartAngle);

                GUI.Label(new Rect(10, 23 + ++iRow * 24, 52, 25), "移动速度");
                StroyEditorCommand.ReadData(new Rect(65, 23 + iRow * 24, 88, 22), ref m_actionData._Speed);

                GUI.Label(new Rect(10, 23 + ++iRow * 24, 42, 25), "加速度");
                StroyEditorCommand.ReadData(new Rect(55, 23 + iRow * 24, 98, 22), ref m_actionData._Acceleration);

                GUI.Label(new Rect(10, 23 + ++iRow * 24, 52, 25), "持续时间");
                StroyEditorCommand.ReadData(new Rect(65, 23 + iRow * 24, 88, 22), ref m_actionData._Duration);

                GUI.Label(new Rect(10, 23 + ++iRow * 24, 52, 25), "特效名");
                GUI.TextField(new Rect(55, 23 + iRow * 24, 98, 22), (m_actionData._EffectGo == null ? "null" : m_actionData._EffectGo.name));

                GUI.Label(new Rect(10, 23 + ++iRow * 24, 52, 25), "特效时间");
                StroyEditorCommand.ReadData(new Rect(65, 23 + iRow * 24, 88, 22), ref m_actionData._EffectStartTime);

                GUI.Label(new Rect(10, 23 + ++iRow * 24, 60.5f, 25), "特效位置X");
                StroyEditorCommand.ReadData(new Rect(74, 23 + iRow * 24, 78, 22), ref m_actionData._EffectPosition.x);

                GUI.Label(new Rect(10, 23 + ++iRow * 24, 60.5f, 25), "特效位置Y");
                StroyEditorCommand.ReadData(new Rect(74, 23 + iRow * 24, 78, 22), ref m_actionData._EffectPosition.y);

                GUI.Label(new Rect(10, 23 + ++iRow * 24, 60.5f, 25), "特效位置Z");
                StroyEditorCommand.ReadData(new Rect(74, 23 + iRow * 24, 78, 22), ref m_actionData._EffectPosition.z);

                GUI.Label(new Rect(10, 23 + ++iRow * 24, 80, 25), "特效循环次数");
                StroyEditorCommand.ReadData(new Rect(93, 23 + iRow * 24, 60, 22), ref m_actionData._EffectLoopTimes);

                GUI.Label(new Rect(10, 23 + ++iRow * 24, 52, 25), "声音时间");
                StroyEditorCommand.ReadData(new Rect(65, 23 + iRow * 24, 88, 22), ref m_actionData._SoundTime);

                GUI.Label(new Rect(10, 23 + ++iRow * 24, 42, 25), "声音名");
                m_actionData._SoundName = GUI.TextField(new Rect(55, 23 + iRow * 24, 98, 22), m_actionData._SoundName);

                //GUILayout.Label("动画名称",GUILayout.Width(60),GUILayout.Height(25));
                //actionData._ActionName = GUILayout.TextField(actionData._ActionName, GUILayout.Width(50), GUILayout.Height(25));
                //actionData._Acceleration = Convert.ToSingle(GUILayout.TextField(actionData._Acceleration.ToString(), GUILayout.Width(100), GUILayout.Height(25)));
                ++iRow;

                if (m_isNewCreate)
                {
                    if (GUI.Button(new Rect(10, 23 + ++iRow * 24, 65, 25), "取消"))
                    {
                        m_isShowWindow = false;
                        m_isNewCreate  = false;
                    }

                    if (GUI.Button(new Rect(85, 23 + iRow * 24, 65, 25), "保存"))
                    {
                        m_winType = WinType.Animation;

                        //m_isShowWindow = false;
                        m_isNewCreate = false;
                        AddSaveAction(m_actionData);

                        EditorDataManager.Instance.CurSelectNpcAction.AnimID.Add(m_actionData._ActionID);
                        m_curAnimList  = EditorDataManager.Instance.CurSelectNpcAction.AnimID;
                        m_curTitleName = EditorDataManager.Instance.CurSelectNpcAction.NpcID + "动画列表";
                        StroyLineConfigManager.Instance.GetStroyActionConfig.Add(m_actionData._ActionID, m_actionData);
                    }
                }
                else
                {
                    if (GUI.Button(new Rect(10, 23 + ++iRow * 24, width, 25), "返回"))
                    {
                        m_winType      = WinType.Animation;
                        m_curTitleName = EditorDataManager.Instance.CurSelectNpcAction.NpcID + "动画列表";
                    }
                }

                m_windowRect.height = (iRow + 2) * 25;
                break;

            case WinType.CameraGroup:
                int icgRow = 0;
                if (tooltip.Length > 0)
                {
                    icgRow++;
                    GUILayout.Label(tooltip, m_guiStyle);
                }

                GUI.Label(new Rect(10, 23 + icgRow * 24, 52, 25), "背景音乐");
                m_stroyLineData._BgMusic = GUI.TextField(new Rect(65, 23 + icgRow * 24, 88, 22), m_stroyLineData._BgMusic);

                GUI.Label(new Rect(10, 23 + ++icgRow * 24, 60.5f, 25), "触发副本");
                StroyEditorCommand.ReadData(new Rect(74, 23 + icgRow * 24, 78, 22), ref m_stroyLineData._EctypeID);

                GUI.Label(new Rect(10, 23 + ++icgRow * 24, 60.5f, 25), "加载地图");
                StroyEditorCommand.ReadData(new Rect(74, 23 + icgRow * 24, 78, 22), ref m_stroyLineData._SceneMapID);

                GUI.Label(new Rect(10, 23 + ++icgRow * 24, 60.5f, 25), "触发条件");
                StroyEditorCommand.ReadData(new Rect(74, 23 + icgRow * 24, 78, 22), ref m_stroyLineData._TriggerCondition);

                GUI.Label(new Rect(10, 23 + ++icgRow * 24, 60.5f, 25), "剧情标识");
                StroyEditorCommand.ReadData(new Rect(74, 23 + icgRow * 24, 78, 22), ref m_stroyLineData._StroyLineID);

                if (GUI.Button(new Rect(10, 23 + ++icgRow * 24, width, 25), "增加镜头组"))
                {
                    m_stroyLineData._CameraGroup.Add(0);
                }

                for (int i = 0; i < m_stroyLineData._CameraGroup.Count; i++)
                {
                    GUI.Label(new Rect(10, 25 + ++icgRow * 24, 60.5f, 25), "镜头组");
                    var inputStr = GUI.TextField(new Rect(74, 23 + icgRow * 24, 78, 22), m_stroyLineData._CameraGroup[i].ToString());
                    m_stroyLineData._CameraGroup[i] = Convert.ToInt32((inputStr.Length == 0) ? "0" : inputStr);
                }

                ++icgRow;
                if (m_isNewCreate)
                {
                    if (GUI.Button(new Rect(10, 23 + ++icgRow * 24, 65, 25), "取消"))
                    {
                        m_isShowWindow = false;
                        m_isNewCreate  = false;
                    }

                    if (GUI.Button(new Rect(85, 23 + icgRow * 24, 65, 25), "保存"))
                    {
                        m_isShowWindow = false;
                        m_isNewCreate  = false;
                        int vocation = PlayerManager.Instance.FindHeroDataModel().PlayerValues.PlayerCommonValue.PLAYER_FIELD_VISIBLE_VOCATION;

                        StroyLineConfigManager.Instance.GetStroyLineConfig.Add(new StroyLineKey {
                            VocationID = vocation, ConditionID = m_stroyLineData._TriggerCondition, EctypeID = m_stroyLineData._EctypeID
                        }, m_stroyLineData);
                        EditorDataManager.Instance.SetCurSelectEctypeID(m_stroyLineData._EctypeID, m_stroyLineData._TriggerCondition, m_stroyLineData._TriggerVocation);
                        InitEditorUI(m_stroyLineData);
                        EditorDataManager.Instance.StroyLineTempData.Add(m_stroyLineData);
                    }
                }

                m_windowRect.height = (icgRow + 2) * 25;
                break;

            default:
                break;
            }
        }
Ejemplo n.º 10
0
    private static void StroyActionConfigPostprocess()
    {
        string     path = System.IO.Path.Combine(RESOURCE_STROY_CONFIG_FOLDER, "ActionConfig.xml");
        TextReader tr   = new StreamReader(path);
        string     text = tr.ReadToEnd();

        if (text == null)
        {
            Debug.LogError("stroyAction config file not exist");
            return;
        }
        else
        {
            XmlSpreadSheetReader.ReadSheet(text);
            XmlSpreadSheet sheet = XmlSpreadSheetReader.Output;
            string[]       keys  = XmlSpreadSheetReader.Keys;

            object[] levelIds = sheet[keys[0]];

            List <StroyActionConfigData> tempList = new List <StroyActionConfigData>();

            for (int i = 0; i < levelIds.Length; i++)
            {
                if (0 == i || 1 == i)
                {
                    continue;
                }
                StroyActionConfigData data = new StroyActionConfigData();
                data._ActionID   = Convert.ToInt32(sheet["ActionID"][i]);
                data._ActionName = Convert.ToString(sheet["Name"][i]);
                var      startPosString = Convert.ToString(sheet["StartPosition"][i]);
                string[] splitposString = startPosString.Split("+".ToCharArray());
                float    posX           = Convert.ToSingle(splitposString[0]);
                float    posY           = Convert.ToSingle(splitposString[1]);
                float    posZ           = Convert.ToSingle(splitposString[2]);
                data._StartPosition = new Vector3(posX, posY, posZ);

                data._ActionType   = Convert.ToInt32(sheet["Type"][i]);
                data._StartAngle   = Convert.ToSingle(sheet["StartAngle"][i]);
                data._ModelAngle   = Convert.ToSingle(sheet["ModelAngle"][i]);
                data._Speed        = Convert.ToSingle(sheet["Speed"][i]);
                data._Acceleration = Convert.ToSingle(sheet["Acceleration"][i]);
                data._Duration     = Convert.ToSingle(sheet["Duration"][i]);

                string effectPath = Convert.ToString(sheet["EffectName"][i]);
                string pathEffect = System.IO.Path.Combine(ASSET_EFFECT_RES_FOLDER, effectPath + ".prefab");
                data._EffectGo = (GameObject)AssetDatabase.LoadAssetAtPath(pathEffect, typeof(GameObject));

                data._EffectStartTime = Convert.ToSingle(sheet["EffectTime"][i]);
                var      effectPosString = Convert.ToString(sheet["EffectPosition"][i]);
                string[] effectposList   = effectPosString.Split("+".ToCharArray());
                float    effectposX      = Convert.ToSingle(effectposList[1]);
                float    effectposY      = Convert.ToSingle(effectposList[2]);
                float    effectposZ      = Convert.ToSingle(effectposList[3]);
                data._EffectPosition   = new Vector3(effectposX, effectposY, effectposZ);
                data._EffectStartAngle = Convert.ToSingle(sheet["EffectAngle"][i]);
                data._EffectLoopTimes  = Convert.ToInt32(sheet["EffectLoopTime"][i]);

                data._SoundTime = Convert.ToSingle(sheet["SoundTime"][i]);
                data._SoundName = Convert.ToString(sheet["SoundName"][i]);

                tempList.Add(data);
            }

            CreateActionConfigDataBase(tempList);
        }
    }
Ejemplo n.º 11
0
    /// <summary>
    /// 创建玩家对象
    /// </summary>
    /// <param name="npcAction"></param>
    /// <param name="AnimID"></param>
    public void CreateRoleData(StroyAction npcAction, int AnimID)
    {
        StroyActionConfigData actionData = StroyLineConfigManager.Instance.GetStroyActionConfig[AnimID];
        Vector3 pos = Vector3.zero;

        pos = StroyLineConfigManager.Instance.GetStroyActionConfig[AnimID]._StartPosition;
        //pos.z = StroyLineConfigManager.Instance.GetStroyActionConfig[AnimID]._StartPosition.z;
        GameObject npcGo             = null;
        Quaternion roleInitDirection = Quaternion.Euler(0, (float)actionData._StartAngle, 0);

        if (StroyLineDataManager.Instance.GetNpcList.ContainsKey(npcAction.NpcID))
        {
            Transform npcTrans = StroyLineDataManager.Instance.GetNpcList[npcAction.NpcID].transform;
            npcTrans.position = pos;
            npcTrans.forward  = roleInitDirection * Vector3.forward;
            return;
        }

        switch (npcAction.RoleType)
        {
        case 1:     ///生成玩家
            var playerData = PlayerDataManager.Instance.GetBattleItemData((byte)npcAction.RoleResID);
            npcGo = AssemblyPlayer(playerData, pos);
            npcGo.transform.forward = roleInitDirection * Vector3.forward;
            break;

        case 2:                                                                                ///生成怪物
            var monsterData = MapResManager.Instance.GetMapMonsterPrefab(npcAction.RoleResID); //BattleConfigManager.Instance.GetMonsterData(npcAction.RoleResID);
            //npcGo = (GameObject)GameObject.Instantiate(monsterData.MonsterPrefab, pos, roleInitDirection);
            //npcGo.RemoveComponent<MonsterBehaviour>("MonsterBehaviour");
            //npcGo.RemoveComponent<MonsterBehaviour>("HurtFlash");
            break;

        case 3:                                                                              ///生成NPC

            var npcPrefab = MapResManager.Instance.GetMapMonsterPrefab(npcAction.RoleResID); //NPCConfigManager.Instance.NPCConfigList[npcAction.RoleResID].NPCPrefab;
            if (npcPrefab != null)
            {
                npcGo = (GameObject)GameObject.Instantiate(npcPrefab, pos, roleInitDirection);
            }
            else
            {
                Debug.LogWarning("剧情系统:发现将要生成的NpcPrefab为空。");
            }
            break;

        case 4:                       ///生成当前英雄
            var curHeroVocation = PlayerManager.Instance.FindHeroDataModel().PlayerValues.PlayerCommonValue.PLAYER_FIELD_VISIBLE_VOCATION;
            if (curHeroVocation == 0) ///当在剧情编辑器状态下,无法获得用户职业
            {
                curHeroVocation = (byte)npcAction.RoleResID;
            }
            var heroData = PlayerDataManager.Instance.GetBattleItemData((byte)curHeroVocation);
            if (heroData != null)
            {
                npcGo = AssemblyPlayer(heroData, pos);
                npcGo.transform.forward = roleInitDirection * Vector3.forward;
            }
            else
            {
                TraceUtil.Log(SystemModel.Common, TraceLevel.Error, "没有获得当前英雄配置数据");
            }
            break;

        default:
            break;
        }

        if (npcGo != null)
        {
            StroyNpcBehaviour npcBehaviour;
            int size;

            var childs = npcGo.GetChildTransforms();
            childs.ApplyAllItem(P => P.gameObject.layer = 30);
//			Transform skinObj = npcGo.transform.Find("SkinnedMesh");//
            SkinnedMeshRenderer[] skinRend = npcGo.GetComponentsInChildren <SkinnedMeshRenderer>();
            if (skinRend != null && skinRend.Length != 0)
            {
                foreach (SkinnedMeshRenderer skin in skinRend)
                {
                    skin.updateWhenOffscreen = true;
                }
            }

            if (npcAction.RoleType == 2)
            {
                var child = npcGo.transform.GetChild(0);
                npcGo.SetActive(true);
                npcBehaviour = child.gameObject.AddComponent <StroyNpcBehaviour>();
                size         = child.animation.GetClipCount();

                if (size > 0)
                {
                    m_AnimationList.Add(npcAction.NpcID, new List <AnimationClip>());
                    foreach (AnimationState states in child.animation)
                    {
                        m_AnimationList[npcAction.NpcID].Add(child.animation.GetClip(states.name));
                    }
                }
            }
            else
            {
                npcBehaviour = npcGo.AddComponent <StroyNpcBehaviour>();
                size         = npcGo.animation.GetClipCount();

                if (size > 0)
                {
                    m_AnimationList.Add(npcAction.NpcID, new List <AnimationClip>());
                    foreach (AnimationState states in npcGo.animation)
                    {
                        m_AnimationList[npcAction.NpcID].Add(npcGo.animation.GetClip(states.name));
                    }
                }
            }

            StroyLineDataManager.Instance.GetNpcList.Add(npcAction.NpcID, npcBehaviour);
        }
        else
        {
            Debug.LogWarning("剧情系统:没有创建ID为" + npcAction.NpcID + "NPC");
        }
    }