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;}//递归枚举所有GameObjectpublic 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;}}}//递归枚举所有Compoentpublic 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;}}
}

  

转载于:https://www.cnblogs.com/mrblue/p/5099491.html

Unity3d 枚举某个目录下所有资源相关推荐

  1. java gradle 资源访问_java在gradle工程访问src/test/resources目录下的资源配置文件

    package com.jiepu; import java.io.File; import java.net.URISyntaxException; import java.util.Map; im ...

  2. android访问asset目录下的资源

    android提供了AssetManager来访问asset目录下的资源, 在activity中通过getAssets()获取AssetManager 常用的api如下: 1.列举路径下的资源Stri ...

  3. 获取Drawable目录下的资源

    获取Drawable目录下的资源 /*** 通过文件名获取Drawable目录下的图片资源** @param context 上下文对象* @param name 文件名* @return bitma ...

  4. java在gradle工程访问src/test/resources目录下的资源配置文件

    package com.jiepu; import java.io.File; import java.net.URISyntaxException; import java.util.Map; im ...

  5. gdx 打包可执行 jar 不会包含源码 src 目录下的资源

    gdx 项目分为 android.core.desktop,在 core 项目的 src 目录下(包路径)有一个文件 R.template 在 package 为 xxxx.xxx.xxx.xx.he ...

  6. 【IDEA】idea中maven项目Resource目录下的资源文件无法编译

    文章目录 1.概述 1.概述 我有一个项目,项目结构如下 项目moudle_asrcmainjavaresourcesmybatismybatis-config-xxx.xmlmoudle_bsrcm ...

  7. Android开发之assets目录下资源使用总结

    预前知识: Android资源文件分类: Android资源文件大致可以分为两种: 第一种是res目录下存放的可编译的资源文件: 这种资源文件系统会在R.Java里面自动生成该资源文件的ID,所以访问 ...

  8. c# 找出目录下的所有子目录_C# 基础知识系列- 14 IO篇 文件的操作(2)

    前接上一篇内容. 如果是第一次捧场的小伙伴,为了您阅读的连贯性,烦请扫一眼<C# 基础知识系列- 14 IO篇 文件的操作(1)>.本篇是IO之文件操作的第二篇,介绍一下目录和路径的相关类 ...

  9. Android -- 读取assets文件夹下的资源

    1 Android 中的资源文件 Android 资源文件大致可以分为两种:res/raw 和 assets res/raw res/raw 目录下存放可编译的资源文件 这种资源文件系统会在 R.Ja ...

  10. linux查看指定目录下各个文件大小以及总体大小

    一 查看目录下各个文件的大小 1.查询文件的大小 [Devops@localhost kafka_2.11-2.3.1]$ du -h --max-depth=1 240K    ./bin 72K  ...

最新文章

  1. 使用OpenVAS 9进行漏洞扫描
  2. 大智慧数据文件python_Python 自动化测试(四):数据驱动
  3. Lucene组件概述
  4. Python3文本读写操作
  5. 黑莓桌面管理器4.2_虚拟桌面管理器行业现状调研分析及发展趋势预测报告(2020)...
  6. 电脑计算器_哪几种计算器可以携带入考场!注会考试忘带计算器了怎么办?
  7. php事务和回滚,php – Mysql事务:提交和回滚
  8. BZOJ 3192: [JLOI2013]删除物品 奇淫技巧树状数组
  9. c/c++文件操作之缓冲区
  10. win10操作系统使用IE8浏览器仿真环境
  11. html js实现分页代码,js分页代码示例
  12. Linux系统编程思维导图:基础指令,常用工具,进程,基础IO,IPC,线程;思维导图因为图片过大所以放了链接,需要的可以下载
  13. Python 音频生成器
  14. 用MSYS2编译diction程序
  15. leetcode Revert Binary Tree
  16. 朴素贝叶斯详解及中文舆情分析(附代码实践)
  17. 【Linux】ab命令实现网站性能压力测试
  18. Oracle AWR 阙值影响历史执行计划
  19. 采购行业权威证书对比
  20. 完全备份、增量备份和差异备份

热门文章

  1. memcached—认识Memcache
  2. Element-ui中table使用row-class-name无效的锅
  3. pom.xml mvn package expected START_TAG or END_TAG not TEXT
  4. 05. 对定制的类型转换函数保持警觉
  5. 类成员变量初始化总结
  6. 荣耀智慧屏 55英寸屏幕 搭载鸿蒙OS,3799元起!荣耀智慧屏发布:55英寸4K全面屏+首发鸿蒙OS+无广告...
  7. sql 筛选唯一值_多列数据获取唯一值?你再肉眼筛选的时候,我已经下班了
  8. arraylist 初始化_ArrayList 和 LinkedList 哪个更占空间?
  9. linux c 语言编程如何把串口字符串数据写到txt文件中_C 语言简单编程速成 | Linux 中国...
  10. mybatis mysql upsert_SpringBoot2.3.4+Mybatis+Phoenix操作HBase2.0.6