Unity3d 枚举某个目录下所有资源
- using UnityEngine;
- using System.Collections;
- using UnityEditor;
- using System.Collections.Generic;
- using System.ComponentModel;
- using Object = UnityEngine.Object;
- //在选中的资源中查找
- public static class EnumAssets {
- //枚举所有的T类型的资源
- public static IEnumerable<T> EnumInCurrentSelection<T>()
- where T : Object
- {
- Object[] selectionAsset = Selection.GetFiltered(typeof(Object), SelectionMode.DeepAssets);
- foreach (var s in selectionAsset)
- {
- var temp = s as T;
- if (null != temp)
- {
- yield return temp;
- }
- }
- }
- //枚举所有的GameObject类型的资源
- public static IEnumerable<GameObject> EnumGameObjectInCurrentSelection()
- {
- foreach (var s in EnumInCurrentSelection<GameObject>())
- {
- yield return s;
- }
- yield break;
- }
- //递归枚举所有GameObject
- public static IEnumerable<GameObject> EnumGameObjectRecursiveInCurrentSelection()
- {
- foreach (var s in EnumInCurrentSelection<GameObject>())
- {
- foreach(var g in EnumGameObjectRecursive(s))
- {
- yield return g;
- }
- }
- }
- public static IEnumerable<GameObject> EnumGameObjectRecursive(GameObject go)
- {
- yield return go;
- for(int i=0; i<go.transform.childCount; i++)
- {
- foreach (var t in EnumGameObjectRecursive(go.transform.GetChild(i).gameObject))
- {
- yield return t;
- }
- }
- }
- //递归枚举所有Compoent
- public static IEnumerable<T> EnumComponentRecursiveInCurrentSelection<T>()
- where T : UnityEngine.Component
- {
- foreach (var go in EnumInCurrentSelection<GameObject>())
- {
- var cs = go.GetComponentsInChildren<T>(true);
- foreach (var c in cs)
- {
- yield return c;
- }
- }
- }
- //枚举所有GameObject在这个目录
- //path是相对于Application.dataPath的 例如 Assets/Res/UI/
- public static IEnumerable<GameObject> EnumGameObjectAtPath(string path)
- {
- var guids = AssetDatabase.FindAssets("t:GameObject", new string[] { path });
- foreach (var guid in guids)
- {
- var p = AssetDatabase.GUIDToAssetPath(guid);
- var go = AssetDatabase.LoadAssetAtPath(p, typeof(GameObject)) as GameObject;
- if (null != go)
- {
- yield return go;
- }
- }
- }
- //枚举所有资源
- //path是相对于Application.dataPath的 例如 Assets/Res/UI/
- public static IEnumerable<T> EnumAssetAtPath<T>(string path)
- where T : Object
- {
- var guids = AssetDatabase.FindAssets("t:Object", new string[] { path });
- foreach (var guid in guids)
- {
- var p = AssetDatabase.GUIDToAssetPath(guid);
- var go = AssetDatabase.LoadAssetAtPath(p, typeof(System.Object)) as T;
- if (null != go)
- {
- yield return go;
- }
- }
- }
- //递归枚举这个目录下的GameObject的所有T类型组件
- //path是相对于Application.dataPath的 例如 Assets/Res/UI/
- public static IEnumerable<T> EnumComponentRecursiveAtPath<T>(string path)
- where T : UnityEngine.Component
- {
- var gos= EnumGameObjectAtPath(path);
- foreach (var go in gos)
- {
- var cs = go.GetComponentsInChildren<T>(true);
- foreach(var c in cs)
- {
- yield return c;
- }
- }
- }
- //递归枚举这个目录下的GameObject
- //path是相对于Application.dataPath的 例如 Assets/Res/UI/
- public static IEnumerable<GameObject> EnumGameOjectRecursiveAtPath(string path)
- {
- var gos = EnumComponentRecursiveAtPath<Transform>(path);
- foreach (var go in gos)
- {
- yield return go.gameObject;
- }
- }
- }
Unity3d 枚举某个目录下所有资源的更多相关文章
- android访问asset目录下的资源
android提供了AssetManager来访问asset目录下的资源, 在activity中通过getAssets()获取AssetManager 常用的api如下: 1.列举路径下的资源Stri ...
- 安卓获取Assets目录下的资源
获取Assets目录下的资源 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 ! ...
- Android 如何引用com.android.internal.R目录下的资源
Android 如何引用com.android.internal.R目录下的资源 项目需求 有一个资源跟系统上的一个资源相同,想要引用它:frameworks/base/core/res/res/dr ...
- Android读取assets目录下的资源
1.获取资源的输入流 资源文件 sample.txt 位于 $PROJECT_HOME/assets/ 目录下,可以在 Activity 中通过 Context.getAssets().open(“s ...
- Unity3d:播放物理目录下的MP3文件
u3d里,是支持播放MP3文件的,但要放到资源里,不支持播放物理目录下的MP3文件.由于界面上无需显示,只是当作背景音乐来播放,所以想到调用c#的组件来解决此问题.主要代码都在附件中,根据需要加到自己 ...
- Java获取/resources目录下的资源文件方法
Web项目开发中,经常会有一些静态资源,被放置在resources目录下,随项目打包在一起,代码中要使用的时候,通过文件读取的方式,加载并使用: 今天总结整理了九种方式获取resources目录下文件 ...
- Asp.Net配置不允许通过url方式访问目录下的资源
Asp.Net网站发布后,有部分文件为了安全性,是不能直接通过url访问获取 通常有2种做法: 1.将文件目录建立在 App_code 或者App_Data 等默认的隐藏目录下 2.将文件的目录添加到 ...
- ASP.NET 通过配置hiddenSegment禁止目录下资源通过Url形式访问
根据默认的ASP.NET配置,App_Data下的资源是禁止通过Url形式直接访问的,在实际开发中,可能也会有这样的需求,比如某些是系统资源目录,该目录下的资源也需要像App_Data目录一样禁止访问 ...
- Android开发之assets目录下资源使用总结
预前知识: Android资源文件分类: Android资源文件大致可以分为两种: 第一种是res目录下存放的可编译的资源文件: 这种资源文件系统会在R.Java里面自动生成该资源文件的ID,所以访问 ...
随机推荐
- Flex入门笔记
Test_01.mxml <?xml version="1.0" encoding="utf-8"?> <viewer:BaseWidget ...
- YII2 实现后台操作记录日志(转)
一.连接linux服务器,创建数据文件 php yii migrate/create user_log 二.修改数据文件 console/migrations/m150721_032220_admin ...
- Web 安全测试
http://blog.sina.com.cn/s/blog_a1bbddc70101dt12.html http://blog.csdn.net/pdn2000/article/details/64 ...
- webservice 服务端例子+客户端例子+CXF整合spring服务端测试+生成wsdl文件 +cxf客户端代码自动生成
首先到CXF官网及spring官网下载相关jar架包,这个不多说.webservice是干嘛用的也不多说. 入门例子 模拟新增一个用户,并返回新增结果,成功还是失败. 大概的目录如上,很简单. Res ...
- Android Studio-开启Preview视图
Preview视图会在切换"Design"和"Text"视图的时候自动显示,可在右侧工具栏开启: 今天无意中关闭了,找了半天,原来可以在这个地方再次开启:
- 简谈switch case
工作中从buff里截取了一个字符串,然后和配置文件中的字符串名字对比 ,如果一样,处理,不一样,elseif 再判断,再处理! switch(){case : case :...... }先说语法,再 ...
- primefaces4.0基本教程以及增删改查
最近试着用了用primefaces4.0,准备写一个基本的增删改查以及分页程序,但在写的过程中发现了很多问题,本想通过百度.谷歌解决,但无奈中文资料非常少,笔者在坑中不停的打滚,终于完成了一个有着基本 ...
- Cocos2D-X 学习笔记
1. 3.4final控制台创建项目后,安卓编译会失败,必须手动把cocos/平台/andorid/java/src目录里的文件复制到安卓项目的src文件夹即可 2. 安卓的文件目录与win的略有不同 ...
- WCF服务显示的是服务器名称而不是IP地址...
打开http://xx.xx.xx.xx:端口号/Service1.svc页面显示的服务地址为: http://xx_yy_server:端口号/Service1.svc?wsdl 是显示的服务器的名 ...
- Reading Famous blog to prevent me wasting time on blind wandering
I can`t help surfing the useless bbs and some other kind of SNS. The time I begin to do it, it costs ...