示例#1
0
        /// <summary>
        /// 刷新窗口
        /// </summary>
        private void Refresh()
        {
            wantsMouseMove = true;
            ClearTempConnect();
            if (!Directory.Exists(ConfigInfo.StoryTreeFolder))
            {
                Directory.CreateDirectory(ConfigInfo.StoryTreeFolder);
                Debug.LogWarning("文件夹不存在,已重新创建:" + ConfigInfo.StoryTreeFolder);
            }

            //遍历故事树文件夹,获取所有该文件夹内的故事树文件
            List <StoryTree> tempStoryTrees = new List <StoryTree>();
            DirectoryInfo    TheFolder      = new DirectoryInfo(ConfigInfo.StoryTreeFolder);

            foreach (FileInfo NextFile in TheFolder.GetFiles())
            {
                string[] name = NextFile.Name.Split('.');
                if (name[1] == "asset" & name.Length == 2)
                {
                    //StoryTree storyTree = Resources.Load<StoryTree>("StoryTrees/" + name[0]);
                    StoryTree storyTree = AssetCreator <StoryTree> .GetAsset(ConfigInfo.StoryTreeFolder + "/" + name[0] + ".asset");

                    if (storyTree != null)
                    {
                        tempStoryTrees.Add(storyTree);
                    }
                }
            }

            if (m_StoryTrees == null)
            {
                m_StoryTrees = new List <StoryTree>();
            }

            //检测窗体引用的故事树是否还存在
            for (int i = 0; i < m_StoryTrees.Count; i++)
            {
                bool isHave = false;
                foreach (StoryTree tempStoryTree in tempStoryTrees)
                {
                    if (m_StoryTrees[i].Equals(tempStoryTree))
                    {
                        isHave = true;
                        break;
                    }
                }
                if (!isHave)
                {
                    m_StoryTrees.Remove(m_StoryTrees[i]);
                }
            }
            //检测文件夹内是否有新的故事树
            foreach (StoryTree tempStoryTree in tempStoryTrees)
            {
                bool isSame = false;
                if (m_StoryTrees.Count > 0)
                {
                    for (int i = 0; i < m_StoryTrees.Count; i++)
                    {
                        if (tempStoryTree.Equals(m_StoryTrees[i]))
                        {
                            isSame = true;
                            break;
                        }
                    }
                }
                if (!isSame)
                {
                    m_StoryTrees.Add(tempStoryTree);
                }
            }

            if (m_StoryTrees.Count == 0)
            {
                m_CurrentStoryTree = null;
            }
        }