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需要知道你要构建或者运行的项目,以便找到它们.我们将这 ...
随机推荐
- 【mysql】关于checkpoint机制
一.简介 思考一下这个场景:如果重做日志可以无限地增大,同时缓冲池也足够大,那么是不需要将缓冲池中页的新版本刷新回磁盘.因为当发生宕机时,完全可以通过重做日志来恢复整个数据库系统中的数据到宕机发生的时 ...
- 第三篇 :微信公众平台开发实战Java版之请求消息,响应消息以及事件消息类的封装
微信服务器和第三方服务器之间究竟是通过什么方式进行对话的? 下面,我们先看下图: 其实我们可以简单的理解: (1)首先,用户向微信服务器发送消息: (2)微信服务器接收到用户的消息处理之后,通过开发者 ...
- 烂泥:KVM虚拟机windows系统增加硬盘
本文由秀依林枫提供友情赞助,首发于烂泥行天下. 前一篇文章介绍了有关linux系统添加硬盘的方法,这次我们来介绍有关windows系统添加的相关步骤. 其实linux和windows添加的硬盘的方法都 ...
- Busybox下mdev配置说明
[TOC] mdev说明 mdev是busybox自带的一个简化版的udev,适合嵌入式应用场合.其具有使用简单的特点.它的作用就是在系统启动和热插拔或动态加载驱动程序时,自动产生驱动程序所需要的节点 ...
- puppet安装
server xuesong1 10.152.14.85 client xuesong 10.152.14.106 系统centos5.8 两台配置都配置 /etc/ho ...
- jsp EL 表达式
EL表达式 EL 全名为Expression Language EL 语法很简单,它最大的特点就是使用上很方便.接下来介绍EL主要的语法结构: ${sessionScope.user.sex} 所有E ...
- Apache Drill Install and Test
Drill doc, https://drill.apache.org/docs/hive-storage-plugin/ 发现在国内访问的时候有些标签反应还是很慢,因为它访问了gooleapi的缘故 ...
- windows内核编程之常用数据结构
1.返回状态 绝大部分的内核api返回值都是一个返回状态,也就是一个错误代码.这个类型为NTSTATUS.我们自己写的函数也大部分这样做. NTSTATUS MyFunction() { NTSTAT ...
- 如何在TFS的过程模板中添加报表
在新建团队项目的过程中,TFS的"新建团队项目向导"会根据用户选择的过程模板类型(CMMI, Scrum,Agile等)自动为团队项目创建一个SSRS(SQL Server Rep ...
- Team Foundation Server 2015(Update 1)集成 SharePoint Server 2013
自TFS 2008开始,TFS就提供了与SharePoint Server的集成功能,通过多年的研发和提升,目前微软已经实现了两个服务器产品之间的完美集成.通过二者之间的集成,TFS服务器大幅提高和扩 ...