protected override OdinMenuTree BuildMenuTree() { this.MenuWidth = 270; this.WindowPadding = Vector4.zero; OdinMenuTree tree = new OdinMenuTree(false); tree.Config.DrawSearchToolbar = true; tree.DefaultMenuStyle = OdinMenuStyle.TreeViewStyle; tree.AddRange(scriptableObjectTypes.Where(x => !x.IsAbstract), GetMenuPathForType).AddThumbnailIcons(); tree.SortMenuItemsByName(); tree.Selection.SelectionConfirmed += x => this.CreateAsset(); tree.Selection.SelectionChanged += e => { if (this.previewObject && !AssetDatabase.Contains(this.previewObject)) { DestroyImmediate(this.previewObject); } if (e != SelectionChangedType.ItemAdded) { return; } var t = this.SelectedType; if (t != null && !t.IsAbstract) { this.previewObject = CreateInstance(t) as ScriptableObject; } }; return(tree); }
protected override void BuildSelectionTree(OdinMenuTree tree) { var scriptableObjectTypes = AssemblyUtilities.GetTypes(AssemblyTypeFlags.CustomTypes) .Where(x => x.IsClass && !x.IsAbstract && x.InheritsFrom(typeof(T))); tree.Selection.SupportsMultiSelect = false; tree.Config.DrawSearchToolbar = true; tree.AddRange(scriptableObjectTypes, x => x.GetNiceName()) .AddThumbnailIcons(); }
protected override OdinMenuTree BuildMenuTree() { MenuWidth = 300;//菜单的宽度 WindowPadding = Vector4.zero; OdinMenuTree tree = new OdinMenuTree(false); //不支持多选 tree.Config.DrawSearchToolbar = true; //开启搜索状态 tree.DefaultMenuStyle = OdinMenuStyle.TreeViewStyle; //菜单设置成树形模式 //筛选所有非抽象的类 并获取对应的路径 tree.AddRange(scriptableObjectTypes.Where(x => !x.IsAbstract), GetMenuPathForType).AddThumbnailIcons(); tree.SortMenuItemsByName(); tree.Selection.SelectionConfirmed += x => { Debug.Log($"双击确认并创建:{x}"); this.CreateAsset(); }; tree.Selection.SelectionChanged += e => { //每当选择发生更改时发生进行回调2次,一次SelectionCleared 一次是ItemAdded if (this.previewObject && !AssetDatabase.Contains(this.previewObject)) { DestroyImmediate(previewObject); } if (e != SelectionChangedType.ItemAdded) { return; } var t = SelectedType; if (t != null && !t.IsAbstract) { previewObject = CreateInstance(t) as ScriptableObject; } }; return(tree); }
protected override void BuildSelectionTree(OdinMenuTree tree) { tree.AddRange(_list, x => Convert.ToString(x)); }