前段时间策划们想知道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 依赖关系获取预制件任意资源的更多相关文章

  1. 大数据学习day23-----spark06--------1. Spark执行流程(知识补充:RDD的依赖关系)2. Repartition和coalesce算子的区别 3.触发多次actions时,速度不一样 4. RDD的深入理解(错误例子,RDD数据是如何获取的)5 购物的相关计算

    1. Spark执行流程 知识补充:RDD的依赖关系 RDD的依赖关系分为两类:窄依赖(Narrow Dependency)和宽依赖(Shuffle Dependency) (1)窄依赖 窄依赖指的是 ...

  2. [Unity3d][NGUI]两种思路解决AssetBundle的依赖关系.

    接上文. 使用上文中的AssetBundle打包方式生成的文件包括了依赖关系中的文件. 一般的使用中并不会发现什么问题. 可是当配合NGUI的时候,使用dynamicFont时打包AssetBundl ...

  3. 【Unity3D技术文档翻译】第1.4篇 AssetBundle 依赖关系

    上一章:[Unity3D技术文档翻译]第1.3篇 创建 AssetBundles 本章原文所在章节:[Unity Manual]→[Working in Unity]→[Advanced Develo ...

  4. Unity -- AssetBundle(本地资源加载和加载依赖关系)

    1.本地资源加载 1).建立Editor文件夹 2).建立StreamingAssets文件夹和其Windows的子文件夹 将下方第一个脚本放入Editor 里面 脚本一  资源打包AssetBund ...

  5. spring练习,在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXmlApplicationContext实体类获取Bean对象

    相关 知识 >>> 相关 练习 >>> 实现要求: 在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXm ...

  6. [Unity3d][NGUI]打包NGUI预制件成Assetbundle 两种思路.

    http://www.58player.com/blog-2537-85030.html 接上文,项目中因为需要UI热更新,所以我使用了AssetBundle这个解决方案.               ...

  7. Spark之RDD依赖关系及DAG逻辑视图

    RDD依赖关系为成两种:窄依赖(Narrow Dependency).宽依赖(Shuffle Dependency).窄依赖表示每个父RDD中的Partition最多被子RDD的一个Partition ...

  8. Spring 3.x jar 包详解 与 依赖关系

    以下的内容我会持续更新(当然是我有新发现的时候); 以下内容是我在网上搜索.整理.修改的而成的内容.由于很多内容都是转载了,无法追溯到源头,因此无法一一对原作者进行道谢. 这几天,我查阅大量的官方的文 ...

  9. Gradle用户指南(章8:依赖关系管理基础)

    章8:依赖关系管理基础 本章将介绍一些gradle依赖关系管理的基础 什么是依赖关系管理? 简略的说,依赖管理是由两部分组成的.首先,gradle需要知道你要构建或者运行的项目,以便找到它们.我们将这 ...

随机推荐

  1. Memcache限制端口和访问IP

    Memcache安装十分简单,默认情况下是任何人都可以访问服务器上缓存的数据,所以如果不作处理的话 是很不安全的(乌云上已经提交有很多与此相关的问题) 1.首先要保证服务器上的防火墙都是开启的 2.设 ...

  2. 【mysql】添加对emoji的支持

    1.简介 涉及无线相关的 MySQL 数据库建议都提前采用 utf8mb4 字符集,避免 emoji 表情符号带来的问题 MySQL Server >  5.5.3 2.配置+升级 当前配置 m ...

  3. 第七篇 :微信公众平台开发实战Java版之如何获取微信用户基本信息

    在关注者与公众号产生消息交互后,公众号可获得关注者的OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的.对于不同公众号,同一用户的openid不同). 公众号可通过本接口来根据O ...

  4. popupWindow弹出来后,背景变暗,半透明

    /** * 点击评分,如果评分后,显示的弹出框 */ private void showMakeGradeMarkedWindow() { View view = LayoutInflater.fro ...

  5. 标准C IO函数和 内核IO函数 效率(时间)比较

    前言 标准C提供的文件相关的IO函数,除标准错误输出是不带缓冲的(可以尽快的将错误消息显示出来)之外,所有与终端相关的都是行缓冲,其余都是全缓冲的. 我们可以使用setbuf,setvbuf改变指定流 ...

  6. Spring中AOP原理,源码学习笔记

    一.AOP(面向切面编程):通过预编译和运行期动态代理的方式在不改变代码的情况下给程序动态的添加一些功能.利用AOP可以对应用程序的各个部分进行隔离,在Spring中AOP主要用来分离业务逻辑和系统级 ...

  7. 我的vim配置文件.vimrc

    我的vim配置文件.vimrc map <silent> <F10> :TlistToggle<cr>map <silent> <F8> : ...

  8. Head First HTML5 Programming 读书笔记

    1:HTML5引入了简单化的标记,新的语义和媒体元素,另外要依赖于一组支持web应用的js库. 2:关于js 对象是属性的结合 window对象是全局变量. document对象是window的一个属 ...

  9. [转]比较Jmeter、Grinder和JAVA多线程本身压力测试所带来的性能开销

    1. 测试环境 jmeter版本 :jmeter 2.4 grinder的版本 : Grinder 3 JAVA的版本:JDK 1.6 2. 测试代码 Jmeter测试代码 public class  ...

  10. DataGridView 行、列的隐藏和删除

    ) 行.列的隐藏 [VB.NET] ' DataGridView1的第一列隐藏 DataGridView1.Columns(0).Visible = False ' DataGridView1的第一行 ...