private StoryEditorBase GetMovieEditor(string movie_type) { var type = Assembly.GetExecutingAssembly().GetType(string.Format("ME{0}", movie_type.ToString())); if (type == null) { Debug.LogError("未知错误。"); return(null); } //MovieEditorBase moive = ScriptableObject.CreateInstance(string.Format("MovieEditor{0}", movie_type.ToString())) as MovieEditorBase; StoryEditorBase moive = System.Activator.CreateInstance(type) as StoryEditorBase; if (moive == null) { Debug.LogError("未知错误。"); return(null); } moive.m_type = movie_type.ToString(); moive.OnInit(); return(moive); }
void guiLeftToolbar() { rct_left_toolbar = new Rect(0, top_toolbar_height, left_toolbar_width, position.height); GUILayout.BeginArea(rct_left_toolbar); GUI.color = new Color(0f, 0f, 0f, 0.4f); GUI.DrawTexture(new Rect(0, 0, rct_left_toolbar.width, rct_left_toolbar.height), StoryEditorTools.GetWhiteTex()); GUI.color = new Color(1f, 1f, 1f, 1f); GUI.Label(new Rect(20, 0, rct_left_toolbar.width - 20, item_height), cur_time_string); for (int idx = 0; idx < m_data.Count; idx++) { StoryEditorBase item = m_data[idx]; if (item.m_is_select) { GUI.color = new Color(0.75f, 0.75f, 0.75f, 1.0f); } if (GUI.Button(new Rect(0, item_height * (idx + 1), rct_left_toolbar.width, item_height), item.m_type, EditorStyles.toolbarPopup)) { for (int idy = 0; idy < m_data.Count; idy++) { m_data[idy].UnSelect(); } m_data[idx].OnSelect(); } GUI.color = new Color(1f, 1f, 1f, 1f); } if (GUI.Button(new Rect(0, item_height * (m_data.Count + 1), rct_left_toolbar.width, item_height), "+", EditorStyles.miniButton)) { is_create_movie_type = true; } GUILayout.EndArea(); }
void guiCreateMovie() { rct_create_toolbar = new Rect(0, 0, position.width, position.height); GUILayout.BeginArea(rct_create_toolbar); create_type = (MovieEditorEnum)EditorGUI.EnumPopup(new Rect(0, 0, position.width, item_height), "选择类型:", create_type); if (GUI.Button(new Rect(0, 300, position.width, item_height), "create")) { is_create_movie_type = false; StoryEditorBase moive = GetMovieEditor(create_type.ToString()); if (moive == null) { return; } moive.m_index = m_data.Count; m_data.Add(moive); } if (GUI.Button(new Rect(0, 400, position.width, item_height), "return")) { is_create_movie_type = false; } GUILayout.EndArea(); }
void loadFromConfigFile(string file) { XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(file); if (xmlDoc == null) { string err = "parse movie xml file failed:" + file; Debug.LogError(err); return; } m_data.Clear(); XmlNode root = xmlDoc.SelectSingleNode("Object"); XmlNodeList list = root.ChildNodes; if (list == null || list.Count <= 0) { return; } for (int i = 0; i < list.Count; i++) { XmlNode node = list[i]; XmlElement element = (XmlElement)node; string type = element.GetAttribute("Type"); StoryEditorBase movie = GetMovieEditor(type); if (movie == null) { Debug.LogError("剧情解析错误,请删除该文件后,重做."); return; } movie.LoadData(element); movie.m_index = i; m_data.Add(movie); } }