public void LoadOldTemplates() { for (int i = 0; i < templates.Count; i++) { if (templates[i] == null) { Debug.LogFormat("templates[{0}] == null", i); templates.Clear(); return; } var newitem = TempScriptHelper.LoadFromJson(templates[i]); if (newitem == null) { Debug.LogFormat("newitem[{0}] == null", i); templates.Clear(); return; } templates[i] = newitem; } templateNames = templates.ConvertAll <string>(x => x.Name).ToArray(); templateType = templates.ConvertAll <string>(x => x.GetType().FullName).ToArray(); }
private void OnGUI() { DrawHead(); if (isSetting) { //绘制设置信息 DrawSettings(); } else { if (templates == null) { Debug.Log("template == null"); templates = new List <ScriptTemplate>(); } if (templates.Count == 0) { Debug.Log("AddTemplates"); AddTemplates(); } currentIndex = GUILayout.Toolbar(currentIndex, templateNames); using (var scroll = new EditorGUILayout.ScrollViewScope(scrollPos)) { scrollPos = scroll.scrollPosition; if (currentTemplates != null) { if (currentTemplates.GetType().FullName != currentTemplates.type) { templates[currentIndex] = TempScriptHelper.LoadFromJson(currentTemplates); } currentTemplates.OnBodyGUI(); if (currentTemplates.GetType().FullName == typeof(ScriptTemplate).FullName) { if (templateType.Length > currentIndex) { var type = Type.GetType(templateType[currentIndex]); if (type != null) { templates[currentIndex] = Activator.CreateInstance(type) as ScriptTemplate; Debug.Log("create new:" + currentTemplates.GetType()); } else { Debug.LogFormat("{0} missing: clear templates", currentTemplates.GetType().FullName); templates.Clear(); } } else { Debug.Log("unknow err: clear templates"); templates.Clear(); } } } else { templates.Clear(); Debug.Log("templates.Count <= currentIndex"); } } if (currentTemplates != null) { currentTemplates.OnFootGUI(); } } }