unity3d 依赖关系获取预制件任意资源
前段时间策划们想知道UI预制件中使用了哪些音效
N多预制件、N多音效!!
如果纯人工整理的话这还不累成狗?
累成狗不说,还容易出错
所以获取音频剪辑小工具就诞生了,将策划从死亡边缘拉了回来
我们先看一下相关API手册:http://game.ceeger.com/Script/EditorUtility/EditorUtility.CollectDependencies.html
这玩意可好用了,之前也用它做过获取预制件公共资源工具
看看名字:“收集依赖关系”
那还不简单明了了,有依赖关系的东西都能获取过来嘛
我写了个方法,支持获取任意类型
这个方法你可以直接copy去用,不用自己写的。
使用方法也很简单,在这里我提供一个完整的获取预制件音频剪辑的例子。上代码咯
#region HeadComments
/* ========================================================================
* Copyright (C) 2015 Arthun
*
* 作 者:Arthun
* 文件名称:ArthunTools
* 功 能:升哥哥工具包
* 创建时间:2015/09/11 2:15:20
* 版 本:v1.0.0
*
* [修改日志]
* 修改者: 时间: 修改内容:
*
* =========================================================================
*/
#endregion using System.Collections.Generic;
using UnityEditor;
using UnityEngine; public class ArthunTools : EditorWindow
{
/// 音频剪辑信息 <summary>
///
/// </summary>
public class AudioClipInfo
{
public string prefab = "";
public string audio = "";
} /// 选中预制件(可多选)后按 Alt + G 键获取 <summary>
///
/// </summary>
[MenuItem("Arthun Tools/Get Select Prefabs Info &G")]
static void GetSelectPrefab()
{
GameObject[] gos = Selection.gameObjects; Debug.Log("getCount:" + gos.Length.ToString()); if (gos.Length == )
return; List<AudioClipInfo> audioClipsInfo = new List<AudioClipInfo>();
foreach (GameObject go in gos)
{
#region 依赖关系获取音频
List<AudioClip> audioClips = GetPrefabDepe<AudioClip>(go); foreach (AudioClip ac in audioClips)
{
if (ac != null)
{
AudioClipInfo info = new AudioClipInfo();
info.prefab = go.name;
info.audio = ac.name;
audioClipsInfo.Add(info);
}
}
#endregion
} foreach (AudioClipInfo info in audioClipsInfo)
{
Debug.Log(string.Format("prefab:{0} audio:{1}", info.prefab, info.audio));
} Debug.Log("soundCount:" + audioClipsInfo.Count.ToString());
} /// 获取预制件依赖 <summary>
///
/// </summary>
/// <typeparam name="T">欲获取的类型</typeparam>
/// <param name="go"></param>
/// <returns></returns>
static List<T> GetPrefabDepe<T>(GameObject go)
{
List<T> results = new List<T>();
Object[] roots = new Object[] { go };
Object[] dependObjs = EditorUtility.CollectDependencies(roots);
foreach (Object dependObj in dependObjs)
{
if (dependObj != null && dependObj.GetType() == typeof(T))
{
results.Add((T)System.Convert.ChangeType(dependObj, typeof(T)));
}
} return results;
}
}
文中不足之处欢迎批评指正
本文链接:http://www.cnblogs.com/shenggege/p/4799801.html
unity3d 依赖关系获取预制件任意资源的更多相关文章
- 大数据学习day23-----spark06--------1. Spark执行流程(知识补充:RDD的依赖关系)2. Repartition和coalesce算子的区别 3.触发多次actions时,速度不一样 4. RDD的深入理解(错误例子,RDD数据是如何获取的)5 购物的相关计算
1. Spark执行流程 知识补充:RDD的依赖关系 RDD的依赖关系分为两类:窄依赖(Narrow Dependency)和宽依赖(Shuffle Dependency) (1)窄依赖 窄依赖指的是 ...
- [Unity3d][NGUI]两种思路解决AssetBundle的依赖关系.
接上文. 使用上文中的AssetBundle打包方式生成的文件包括了依赖关系中的文件. 一般的使用中并不会发现什么问题. 可是当配合NGUI的时候,使用dynamicFont时打包AssetBundl ...
- 【Unity3D技术文档翻译】第1.4篇 AssetBundle 依赖关系
上一章:[Unity3D技术文档翻译]第1.3篇 创建 AssetBundles 本章原文所在章节:[Unity Manual]→[Working in Unity]→[Advanced Develo ...
- Unity -- AssetBundle(本地资源加载和加载依赖关系)
1.本地资源加载 1).建立Editor文件夹 2).建立StreamingAssets文件夹和其Windows的子文件夹 将下方第一个脚本放入Editor 里面 脚本一 资源打包AssetBund ...
- spring练习,在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXmlApplicationContext实体类获取Bean对象
相关 知识 >>> 相关 练习 >>> 实现要求: 在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXm ...
- [Unity3d][NGUI]打包NGUI预制件成Assetbundle 两种思路.
http://www.58player.com/blog-2537-85030.html 接上文,项目中因为需要UI热更新,所以我使用了AssetBundle这个解决方案. ...
- Spark之RDD依赖关系及DAG逻辑视图
RDD依赖关系为成两种:窄依赖(Narrow Dependency).宽依赖(Shuffle Dependency).窄依赖表示每个父RDD中的Partition最多被子RDD的一个Partition ...
- Spring 3.x jar 包详解 与 依赖关系
以下的内容我会持续更新(当然是我有新发现的时候); 以下内容是我在网上搜索.整理.修改的而成的内容.由于很多内容都是转载了,无法追溯到源头,因此无法一一对原作者进行道谢. 这几天,我查阅大量的官方的文 ...
- Gradle用户指南(章8:依赖关系管理基础)
章8:依赖关系管理基础 本章将介绍一些gradle依赖关系管理的基础 什么是依赖关系管理? 简略的说,依赖管理是由两部分组成的.首先,gradle需要知道你要构建或者运行的项目,以便找到它们.我们将这 ...
随机推荐
- JSON 格式介绍
转自:http://www.json.org/json-zh.html JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器 ...
- 读书笔记——Windows环境下32位汇编语言程序设计(3)求复数模的子程序
3.6.1.1中的例子 _Calc proc _dwX,_dwY local @dwResult finit fild _dwX fld st(0) fmul ;i*i fild _dwY fld s ...
- 使用Sqoop,最终导入到hive中的数据和原数据库中数据不一致解决办法
Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql.postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL , ...
- Solr与HBase架构设计
摘要:本篇是本人在做一个大数据项目时,对于系统架构的一点总结,如何在保证存储量的情况下,又能保证数据的检索速度. 前提: Solr.SolrCloud提供了一整套的数据检索方案,HBase提 ...
- 移动语义 && 函数调用过程中的 lvalue
当以一个函数内的临时变量对象作为另一个函数的形参的时候,原函数内的临时对象即 rvalue,就会成为此函数内的 lvalue. 这样会重新导致效率低下,因为造成了大量复制操作. <utility ...
- Linux 下子线程 exit code 在主线程中的使用
Linux线程函数原型是这样的: void* thread_fun(void* arg) 它的返回值是 空类型指针,入口参数也是 空类型指针.那么线程的 exit code 也应该是 void * 类 ...
- iTOP-4412开发板低功耗高性能的开源硬件平台——上手评测
iTOP-4412开发板现在比较热门的开发板,笔者近期入了一套.也推荐给初学ARM的朋友学习,4412开发板搭载三星Exynos四核处理器,配备1GB内存,4GB固态硬盘EMMC存储,兼具快速读取与超 ...
- Hadoop with tool interface
Often Hadoop jobsare executed through a command line. Therefore, each Hadoop job has to support read ...
- selenium处理div生成弹框
目前遇到的弹框有两种,一种是alert,一种是div,如果遇到div模拟的弹框,在用alert就不行了. 1. public static Alert getAlert(WebDriver dr) { ...
- Zookeeper C API 指南一(转)
Zookeeper 监视(Watches) 简介 Zookeeper C API 的声明和描述在 include/zookeeper.h 中可以找到,另外大部分的 Zookeeper C API 常量 ...