Exemple #1
0
 /// <summary>
 /// 加载当前场景的采集点对象
 /// </summary>
 private void LoadNowAssetsObj()
 {
     if (dataDic.ContainsKey(this.nowSceneName))
     {
         TextAsset nowSceneTextAsset = dataDic[this.nowSceneName];
         string    assetText         = Encoding.UTF8.GetString(nowSceneTextAsset.bytes);
         StuffDataInfoCollection stuffDataInfoCollection = DeSerializeNow <StuffDataInfoCollection>(assetText);
         if (stuffDataInfoCollection != null)
         {
             nowStuffDataInfoCollection = stuffDataInfoCollection;
             foreach (StuffDataInfo stuffDataInfo in nowStuffDataInfoCollection.StuffDataInfos)
             {
                 if (string.IsNullOrEmpty(stuffDataInfo.stuffPrefabName))
                 {
                     continue;
                 }
                 if (!stuffDataDic.ContainsKey(stuffDataInfo.stuffPrefabName))
                 {
                     continue;
                 }
                 stuffDataInfo.Load();
             }
         }
     }
 }
Exemple #2
0
    private void Update()
    {
        Scene nowScene = SceneManager.GetActiveScene();

        if (!string.Equals(nowScene.name, this.nowSceneName))
        {
            this.nowSceneName = nowScene.name;
            //清理之前创建的采集点对象并和从新加载新的
            if (nowStuffDataInfoCollection != null)
            {
                if (nowStuffDataInfoCollection.StuffDataInfos != null)
                {
                    foreach (StuffDataInfo stuffDataInfo in nowStuffDataInfoCollection.StuffDataInfos)
                    {
                        if (stuffDataInfo != null)
                        {
                            GameObject.DestroyImmediate(stuffDataInfo.StuffObj);
                        }
                    }
                }
            }
            nowStuffDataInfoCollection = null;
            LoadNowAssetsObj();
        }
    }
Exemple #3
0
    public void Load()
    {
        TextAsset[] allTextAssets = Resources.LoadAll <TextAsset>(StuffData.dataDirectoryPath);//加载所有场景的stuff信息
        List <StuffDataInfoCollection> stuffDataInfoCollectionList = new List <StuffDataInfoCollection>();

        foreach (TextAsset textAsset in allTextAssets)
        {
            string assetName = textAsset.name;
            string assetText = Encoding.UTF8.GetString(textAsset.bytes);
            StuffDataInfoCollection stuffDataInfoCollection = DeSerializeNow <StuffDataInfoCollection>(assetText);
            if (stuffDataInfoCollection != null)
            {
                stuffDataInfoCollectionList.Add(stuffDataInfoCollection);
            }
        }
        stuffDataInfoCollections = stuffDataInfoCollectionList.ToArray();
        foreach (StuffDataInfoCollection stuffDataInfoCollection in stuffDataInfoCollections)
        {
            if (stuffDataInfoCollection.StuffDataInfos != null)
            {
                foreach (StuffDataInfo stuffDataInfo in stuffDataInfoCollection.StuffDataInfos)
                {
                    stuffDataInfo.Init();
                }
            }
        }
    }
Exemple #4
0
    /// <summary>
    /// 通过场景名和采集点id获取采集点信息
    /// </summary>
    /// <param name="sceneName"></param>
    /// <param name="stuffID"></param>
    /// <returns></returns>
    public StuffDataInfo GetStuffDataInfo(string sceneName, int stuffID)
    {
        StuffDataInfoCollection stuffDataInfoColletion = stuffDataInfoCollections.FirstOrDefault(temp => string.Equals(temp.sceneName, sceneName));

        if (stuffDataInfoCollections != null)
        {
            return(stuffDataInfoColletion.StuffDataInfos.FirstOrDefault(temp => temp.StuffID == stuffID));
        }
        return(null);
    }
Exemple #5
0
    /// <summary>
    /// 通过场景名获取该场景的所有采集点信息
    /// </summary>
    /// <param name="sceneName"></param>
    /// <returns></returns>
    public StuffDataInfo[] GetStuffDataInfos(string sceneName)
    {
        StuffDataInfoCollection stuffDataInfoCollection = stuffDataInfoCollections.FirstOrDefault(temp => string.Equals(temp.sceneName, sceneName));;

        if (stuffDataInfoCollection != null && stuffDataInfoCollection.StuffDataInfos != null)
        {
            return(stuffDataInfoCollection.StuffDataInfos.ToArray());
        }
        return(new StuffDataInfo[0]);
    }
Exemple #6
0
 private void OnDestroy()
 {
     if (nowStuffDataInfoCollection != null)
     {
         if (nowStuffDataInfoCollection.StuffDataInfos != null)
         {
             foreach (StuffDataInfo stuffDataInfo in nowStuffDataInfoCollection.StuffDataInfos)
             {
                 if (stuffDataInfo != null)
                 {
                     GameObject.DestroyImmediate(stuffDataInfo.StuffObj);
                 }
             }
         }
     }
     nowStuffDataInfoCollection = null;
 }
Exemple #7
0
 private void OnGUI()
 {
     EditorGUILayout.BeginVertical();
     EditorGUILayout.LabelField("路径信息请在StuffManagerEditor内自行设置");
     EditorGUILayout.LabelField("当前场景:" + nowSceneName);
     if (nowStuffDataInfoCollection == null)//如果当前场景不存在数据
     {
         if (GUILayout.Button("创建该场景的采集点信息数据"))
         {
             nowStuffDataInfoCollection           = new StuffDataInfoCollection();
             nowStuffDataInfoCollection.sceneName = nowSceneName;
             if (File.Exists(dataAllPath + "\\" + nowSceneName + ".txt"))
             {
                 if (EditorUtility.DisplayDialog("警告!", "存在相同的文件" + nowSceneName + ".txt\r\n是否覆盖?", "确认覆盖", "取消覆盖"))
                 {
                     string valueText = SerializeNow <StuffDataInfoCollection>(nowStuffDataInfoCollection);
                     File.WriteAllText(dataAllPath + "\\" + nowSceneName + ".txt", valueText, Encoding.UTF8);
                 }
                 else
                 {
                     nowStuffDataInfoCollection = null;
                 }
             }
             else
             {
                 File.Create(dataAllPath + "\\" + nowSceneName + ".txt").Close();
                 string valueText = SerializeNow <StuffDataInfoCollection>(nowStuffDataInfoCollection);
                 File.WriteAllText(dataAllPath + "\\" + nowSceneName + ".txt", valueText, Encoding.UTF8);
             }
         }
     }
     else//如果当前场景存在数据
     {
         if (GUILayout.Button("保存数据"))
         {
             if (nowStuffDataInfoCollection != null && File.Exists(dataAllPath + "\\" + nowStuffDataInfoCollection.sceneName + ".txt"))
             {
                 foreach (StuffDataInfo tempStuffdataInfo in nowStuffDataInfoCollection.StuffDataInfos)
                 {
                     if (tempStuffdataInfo.StuffObj != null)
                     {
                         tempStuffdataInfo.StuffLocation = tempStuffdataInfo.StuffObj.transform.position;
                         tempStuffdataInfo.StuffAngle    = tempStuffdataInfo.StuffObj.transform.eulerAngles;
                     }
                 }
                 string valueText = SerializeNow <StuffDataInfoCollection>(nowStuffDataInfoCollection);
                 File.WriteAllText(dataAllPath + "\\" + nowStuffDataInfoCollection.sceneName + ".txt", valueText, Encoding.UTF8);
                 EditorUtility.DisplayDialog("保存数据", "保存成功!", "确认");
             }
         }
         scrollPostion = EditorGUILayout.BeginScrollView(scrollPostion);
         StuffDataInfo[] stuffDataInfos     = nowStuffDataInfoCollection.StuffDataInfos.ToArray();
         string[]        showGoodsTypeNames = goodsTypeToNameDic.Values.ToArray();
         int[]           showGoodsTypeIDs   = goodsTypeToNameDic.Keys.ToArray();
         foreach (StuffDataInfo stuffDataInfo in stuffDataInfos)
         {
             EditorGUILayout.BeginHorizontal();
             EditorGUILayout.LabelField("ID:", GUILayout.Width(20));
             stuffDataInfo.StuffID = EditorGUILayout.IntField(stuffDataInfo.StuffID, GUILayout.Width(30));
             EditorGUILayout.Space();
             EditorGUILayout.LabelField("Name:", GUILayout.Width(35));
             stuffDataInfo.StuffName = EditorGUILayout.TextField(stuffDataInfo.StuffName, GUILayout.Width(100));
             if (stuffDataInfo.StuffObj)
             {
                 stuffDataInfo.StuffObj.name = stuffDataInfo.StuffName;
             }
             EditorGUILayout.Space();
             EditorGUILayout.LabelField("Target:", GUILayout.Width(40));
             if (!string.IsNullOrEmpty(stuffDataInfo.stuffPrefabName) && stuffDataDic.ContainsKey(stuffDataInfo.stuffPrefabName))//如果存在该预设提则实例化并显示
             {
                 EditorGUILayout.ObjectField(stuffDataInfo.StuffObj, typeof(GameObject), true, GUILayout.Width(100));
                 if (GUILayout.Button("×", GUILayout.Width(25)))
                 {
                     if (EditorUtility.DisplayDialog("警告!", "是否删除该游戏对象(重新选择预设提)", "是", "否"))
                     {
                         stuffDataInfo.stuffPrefabName = "";
                         if (stuffDataInfo.StuffObj != null)
                         {
                             GameObject.DestroyImmediate(stuffDataInfo.StuffObj);
                         }
                         stuffDataInfo.StuffObj = null;
                         stuffDataInfo.Load();
                     }
                 }
             }
             else
             {
                 List <string> names = stuffDataDic.Keys.ToList();
                 int           index = names.IndexOf(stuffDataInfo.stuffPrefabName);
                 index = EditorGUILayout.Popup(index, names.ToArray(), GUILayout.Width(100));
                 if (index >= 0)
                 {
                     stuffDataInfo.stuffPrefabName = names[index];
                     stuffDataInfo.Load();
                 }
             }
             EditorGUILayout.Space();
             int nowID = (int)stuffDataInfo.StuffType;
             EditorGUILayout.LabelField("Type:", GUILayout.Width(35));
             nowID = EditorGUILayout.IntPopup(nowID, showGoodsTypeNames, showGoodsTypeIDs);
             stuffDataInfo.StuffType = (EnumGoodsType)nowID;
             EditorGUILayout.Space();
             EditorGUILayout.LabelField("Count:", GUILayout.Width(40));
             stuffDataInfo.StuffCount = EditorGUILayout.IntField(stuffDataInfo.StuffCount, GUILayout.Width(30));
             EditorGUILayout.Space();
             EditorGUILayout.LabelField("Cooling:", GUILayout.Width(50));
             stuffDataInfo.CoolingTime = EditorGUILayout.FloatField(stuffDataInfo.CoolingTime, GUILayout.Width(35));
             EditorGUILayout.Space();
             if (GUILayout.Button("删除"))
             {
                 if (EditorUtility.DisplayDialog("警告!", "请再次确认是否删除?", "确认", "取消"))
                 {
                     if (stuffDataInfo != null)
                     {
                         if (stuffDataInfo.StuffObj != null)
                         {
                             GameObject.DestroyImmediate(stuffDataInfo.StuffObj);
                         }
                         nowStuffDataInfoCollection.StuffDataInfos.Remove(stuffDataInfo);
                     }
                 }
             }
             EditorGUILayout.EndHorizontal();
         }
         EditorGUILayout.EndScrollView();
         if (GUILayout.Button("添加"))
         {
             nowStuffDataInfoCollection.StuffDataInfos.Add(
                 new StuffDataInfo()
             {
                 StuffID = nowStuffDataInfoCollection.StuffDataInfos.Count() > 0 ? (nowStuffDataInfoCollection.StuffDataInfos.Max(temp => temp.StuffID) + 1) : 0
             });
         }
     }
     EditorGUILayout.EndVertical();
 }