news 2025/12/31 0:05:47

Unity ReferenceFinder插件 窗口中选择资源时 同步选择Assets下的资源

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Unity ReferenceFinder插件 窗口中选择资源时 同步选择Assets下的资源

GitHub地址


当在 窗口中选中资源时,实现 同步选中Assets下的资源对象的功能:

修改AssetTreeView脚本为:

usingUnityEngine;usingUnityEditor;usingUnityEditor.IMGUI.Controls;usingSystem.Collections.Generic;// 带数据的 TreeViewItempublicclassAssetViewItem:TreeViewItem{publicReferenceFinderData.AssetDescriptiondata;}// 资源引用树publicclassAssetTreeView:TreeView{constfloatkIconWidth=18f;constfloatkRowHeights=20f;publicAssetViewItemassetRoot;privateGUIStylestateGUIStyle=newGUIStyle{richText=true,alignment=TextAnchor.MiddleCenter};enumMyColumns{Name,Path,State,}publicAssetTreeView(TreeViewStatestate,MultiColumnHeadermulticolumnHeader):base(state,multicolumnHeader){rowHeight=kRowHeights;columnIndexForTreeFoldouts=0;showAlternatingRowBackgrounds=true;showBorder=false;customFoldoutYOffset=(kRowHeights-EditorGUIUtility.singleLineHeight)*0.5f;extraSpaceBeforeIconAndLabel=kIconWidth;}// ================== 新增:选中同步到 Project ==================protectedoverridevoidSelectionChanged(IList<int>selectedIds){if(selectedIds==null||selectedIds.Count==0)return;List<Object>objects=newList<Object>();foreach(varidinselectedIds){varitem=FindItem(id,rootItem)asAssetViewItem;if(item==null||item.data==null)continue;stringpath=item.data.path;if(string.IsNullOrEmpty(path))continue;varobj=AssetDatabase.LoadAssetAtPath<Object>(path);if(obj!=null)objects.Add(obj);}if(objects.Count>0){Selection.objects=objects.ToArray();EditorGUIUtility.PingObject(objects[0]);}}// =============================================================protectedoverridevoidContextClickedItem(intid){SetExpanded(id,!IsExpanded(id));}protectedoverridevoidDoubleClickedItem(intid){varitem=FindItem(id,rootItem)asAssetViewItem;if(item!=null&&item.data!=null){varassetObject=AssetDatabase.LoadAssetAtPath<Object>(item.data.path);if(assetObject!=null){EditorUtility.FocusProjectWindow();Selection.activeObject=assetObject;EditorGUIUtility.PingObject(assetObject);}}}publicstaticMultiColumnHeaderStateCreateDefaultMultiColumnHeaderState(floattreeViewWidth){varcolumns=new[]{newMultiColumnHeaderState.Column{headerContent=newGUIContent("Name"),headerTextAlignment=TextAlignment.Center,width=200,minWidth=60,autoResize=false,allowToggleVisibility=false,canSort=false},newMultiColumnHeaderState.Column{headerContent=newGUIContent("Path"),headerTextAlignment=TextAlignment.Center,width=360,minWidth=60,autoResize=false,allowToggleVisibility=false,canSort=false},newMultiColumnHeaderState.Column{headerContent=newGUIContent("State"),headerTextAlignment=TextAlignment.Center,width=60,minWidth=60,autoResize=false,allowToggleVisibility=true,canSort=false},};returnnewMultiColumnHeaderState(columns);}protectedoverrideTreeViewItemBuildRoot(){returnassetRoot;}protectedoverridevoidRowGUI(RowGUIArgsargs){varitem=(AssetViewItem)args.item;for(inti=0;i<args.GetNumVisibleColumns();++i){CellGUI(args.GetCellRect(i),item,(MyColumns)args.GetColumn(i),refargs);}}voidCellGUI(RectcellRect,AssetViewItemitem,MyColumnscolumn,refRowGUIArgsargs){CenterRectUsingSingleLineHeight(refcellRect);switch(column){caseMyColumns.Name:variconRect=cellRect;iconRect.x+=GetContentIndent(item);iconRect.width=kIconWidth;if(iconRect.x<cellRect.xMax){varicon=GetIcon(item.data.path);if(icon!=null)GUI.DrawTexture(iconRect,icon,ScaleMode.ScaleToFit);}args.rowRect=cellRect;base.RowGUI(args);break;caseMyColumns.Path:GUI.Label(cellRect,item.data.path);break;caseMyColumns.State:GUI.Label(cellRect,ReferenceFinderData.GetInfoByState(item.data.state),stateGUIStyle);break;}}privateTexture2DGetIcon(stringpath){Objectobj=AssetDatabase.LoadAssetAtPath<Object>(path);if(obj!=null){Texture2Dicon=AssetPreview.GetMiniThumbnail(obj);if(icon==null)icon=AssetPreview.GetMiniTypeThumbnail(obj.GetType());returnicon;}returnnull;}}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/26 5:32:39

AI 工具实战测评:它们到底是“生产力工具”,还是“智商税”?

这两年 AI 工具的数量&#xff0c;已经多到有点离谱了。 从写代码、写文档&#xff0c;到做 PPT、画流程图&#xff0c;几乎每个环节都能塞进一个 AI。问题也随之而来&#xff1a; 这些工具真的能提高效率吗&#xff1f;还是只是“看起来很厉害”&#xff1f;这篇文章不聊概念、…

作者头像 李华
网站建设 2025/12/14 21:05:59

感应电机转子磁场定向FOC仿真与异步电机调速控制仿真那些事儿

感应电机转子磁场定向FOC仿真&#xff0c;异步电机调速控制仿真。 电机参数是山河智能SWFE15型起重量1.5吨电动叉车使用的实际电机。 采用转速电流双闭环&#xff0c;防饱和PI调节器&#xff0c;SVPWM发波&#xff0c;通过iq电流查表实现简单的弱磁控制。 测试工况涵盖带负载启…

作者头像 李华
网站建设 2025/12/27 3:01:33

day33(12.14)——leetcode面试经典150

150. 逆波兰表达式求值 150. 逆波兰表达式求值 题目&#xff1a; 题解&#xff1a; class Solution {public static boolean isNumeric(String str) {return str ! null && str.matches("-?\\d");}public int evalRPN(String[] tokens) {//将数字放在一个…

作者头像 李华
网站建设 2025/12/14 21:00:54

vue基于Spring Boot的减肥健身养生人士饮食营养管理系统_5gn4225x

目录 具体实现截图项目介绍论文大纲核心代码部分展示项目运行指导结论源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作 具体实现截图 本系统&#xff08;程序源码数据库调试部署讲解&#xff09;同时还支持java、ThinkPHP、Node.js、Spring…

作者头像 李华
网站建设 2025/12/14 20:56:13

昇腾CANN从单算子到融合优化实战

目录 1 摘要 2 技术原理 2.1 架构设计理念解析 2.2 核心算法实现 2.2.1 三级流水线设计原理 2.2.2 Tiling策略与数据重用 2.3 性能特性分析 2.3.1 理论性能模型 2.3.2 实测性能数据 3 实战部分 3.1 完整可运行代码示例 3.2 分步骤实现指南 步骤1&#xff1a;环境配…

作者头像 李华
网站建设 2025/12/17 0:30:34

大数据项目阿里云抢占式服务器

一、学生有免费额度可以使用 查看是否有免费的额度&#xff1a; https://university.aliyun.com/?spm5176.29458888.J_9220772140.19.6e632868x2bj7D 或者&#xff1a; https://free.aliyun.com/?spm5176.28623341.J_9220772140.18.4c044519hKalBC 二、购买抢占式资源服务…

作者头像 李华