public ResObject GetResObject(string id) { ResObject resObject = null; if (m_resObjects.TryGetValue(id, out resObject)) { return(resObject); } return(null); }
protected override void OnClose() { m_resObject = null; if (m_grid != null) { GameObject.DestroyImmediate(m_grid.gameObject); } m_grid = null; }
public ResClass(string _id, string _classPath) { m_id = _id; m_classPath = _classPath; m_resObjects.Clear(); string[] files = Directory.GetFiles(_classPath, "*.prefab", SearchOption.TopDirectoryOnly); for (int i = 0; i < files.Length; i++) { var id = Utils.MDToStr(Utils.ReplaceSeparator(files[i])); var resObject = new ResObject(id, files[i]); m_resObjects.Add(resObject); } }
public void Bind(ResObject resObject) { if (m_resObject != null) { if (resObject.id == m_resObject.id) { return; } } m_resObject = resObject; if (m_grid != null) { GameObject.DestroyImmediate(m_grid.gameObject); } m_grid = null; }
public void Initialize() { // 所有资源 m_resObjects.Clear(); string[] files = Directory.GetFiles(SettingManager.Inst.Setting.artPath, "*.prefab", SearchOption.AllDirectories); for (int i = 0; i < files.Length; i++) { var id = Utils.MDToStr(Utils.ReplaceSeparator(files[i])); var resObject = new ResObject(id, files[i]); m_resObjects.Add(id, resObject); } // 资源分组 m_groups.Clear(); string[] dirs = Directory.GetDirectories(SettingManager.Inst.Setting.artPath, "*", SearchOption.TopDirectoryOnly); for (int i = 0; i < dirs.Length; i++) { var id = Utils.MDToStr(Utils.ReplaceSeparator(dirs[i])); var group = new ResGroup(id, dirs[i]); m_groups.Add(id, group); } }
private void Initialize() { if (Inst == null) { OpenCubeWorldEditorWindow(); } // 层初始化 var layer = typeof(TemplateGrid).Name; if (!TagOperation.IsHasLayer(layer)) { TagOperation.AddLayer(layer); } // 关卡 Environment.Inst.Initialize(); // 资源 ResManager.Inst.Initialize(); // 场景界面 m_sceneWindow = new SceneWindow(); m_sceneWindow.Initialize(); // 切换工具事件 m_sceneWindow.switchToolsEventHandler += OnSwitchToolsEventHandler; // TODO m_templateGridSize = new Vector2Int(40, 40); // 资源预览 classRecords = new Dictionary <string, bool>(); m_secondaryGroupId = ""; m_resGroup = null; m_resObject = null; }
// 设置视图选中资源 public void SetViewSelected(ResObject resObject) { m_resObject = resObject; }
/// <summary> /// 画资源库物体预览展示 /// </summary> private void DrawModelView() { if (m_resGroup == null) { return; } // 二级分组 if (m_resGroup.haveGroup) { EditorGUILayout.BeginHorizontal(); List <ResGroup> groups = m_resGroup.GetGroups(); for (int i = 0; i < groups.Count; i++) { if (GUILayout.Toggle(m_secondaryGroupId == groups[i].id, m_content = new GUIContent(groups[i].GetGroupName()), "Button", GUILayout.Height(20))) { m_secondaryGroupId = groups[i].id; m_resGroup = groups[i]; } } EditorGUILayout.EndHorizontal(); } else { m_secondaryGroupId = ""; } // view 列表 m_modelViewScrollPosition = EditorGUILayout.BeginScrollView(m_modelViewScrollPosition); m_modelViewHorizontalCounter = 0; m_modelViewColumn = (int)(Inst.position.width / 200); if (m_modelViewColumn <= 1) { m_modelViewColumn = 1; } EditorGUILayout.BeginVertical(); List <ResClass> classs = m_resGroup.GetClasss(); for (int i = 0; i < classs.Count; i++) { var _class = classs[i]; EditorGUILayout.BeginVertical(); if (!classRecords.ContainsKey(_class.id)) { classRecords[_class.id] = true; } classRecords[_class.id] = GUILayout.Toggle(classRecords[_class.id], m_content = new GUIContent(_class.GetClassName()), GUI.skin.button, GUILayout.Width(Inst.position.width - 20), GUILayout.Height(20)); if (classRecords[_class.id]) { EditorGUILayout.BeginHorizontal(); List <ResObject> resObjects = _class.GetResObjects(); for (int k = 0; k < resObjects.Count; k++) { var resObject = resObjects[k]; EditorGUILayout.BeginVertical(); // 模型预览 Texture2D previewImage = AssetPreview.GetAssetPreview(resObject.prefab); m_content = new GUIContent(previewImage); // 选中状态 bool selected = false; if (m_resObject != null) { if (m_resObject.id == resObject.id) { selected = true; } } bool isSelected = GUILayout.Toggle(selected, m_content, GUI.skin.button); if (isSelected && editorEnabled) { if ((m_resObject != null && m_resObject.id != resObject.id) || m_resObject == null) { // 切换到笔刷工具 sceneWindow.SwitchTools(SceneToolsType.Brush); sceneWindow.brushTools.Bind(resObject); sceneWindow.brushWindow.Initialize(); } m_resObject = resObject; } EditorGUILayout.BeginHorizontal("Box"); EditorGUILayout.LabelField(resObject.GetFileNameWithoutExtension()); EditorGUILayout.EndHorizontal(); EditorGUILayout.EndVertical(); m_modelViewHorizontalCounter++; if (m_modelViewHorizontalCounter == m_modelViewColumn) { m_modelViewHorizontalCounter = 0; EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); } } EditorGUILayout.EndHorizontal(); } EditorGUILayout.EndVertical(); } EditorGUILayout.EndVertical(); EditorGUILayout.EndScrollView(); }