/// <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; } }