news 2026/6/23 8:37:29

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进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/23 11:13:00

入门大模型必知的100个基础问题(附简明答案)

写在前面 这篇内容将图片中的要点按顺序整理为「100 个基础问题 简明答案」。你可以把它当作查阅清单&#xff1a;从概念、结构、训练、评估到优化与应用&#xff0c;快速过一遍大模型&#xff08;LLM&#xff09;最常见的知识点。 100个基础问题什么是大模型&#xff1f; 答案…

作者头像 李华
网站建设 2026/6/23 18:33:23

vue基于Spring Boot的建筑材料管理系统的应用和研究_ug8y52z3

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

作者头像 李华
网站建设 2026/6/22 19:00:42

【大模型】-LangChain--RAG文档系统

文章目录1.完整代码2.结果展示3. RAG介绍1.完整代码 由于使用的是通义&#xff0c;所以代码改造了下&#xff0c;因为openAI需要钱 import streamlit as st import tempfile import osfrom langchain_classic.memory import ConversationBufferMemory from langchain_communi…

作者头像 李华
网站建设 2026/6/23 2:46:08

探索非线性电液伺服系统的模型自适应反步控制

非线性电液伺服系统模型自适应反步控制&#xff0c;考虑模型参数不确定性。pdf教程matlab/simulink源程序 s函数编写在自动化控制领域&#xff0c;非线性电液伺服系统一直是个热门研究对象。今天咱们就聊聊它基于模型自适应反步控制&#xff0c;并且考虑模型参数不确定性的实现…

作者头像 李华