unity3d 依赖关系获取预制件任意资源
2015-09-11 11:14
435 查看
前段时间策划们想知道UI预制件中使用了哪些音效
N多预制件、N多音效!!
如果纯人工整理的话这还不累成狗?
累成狗不说,还容易出错
所以获取音频剪辑小工具就诞生了,将策划从死亡边缘拉了回来
我们先看一下相关API手册:http://game.ceeger.com/Script/EditorUtility/EditorUtility.CollectDependencies.html
这玩意可好用了,之前也用它做过获取预制件公共资源工具
看看名字:“收集依赖关系”
那还不简单明了了,有依赖关系的东西都能获取过来嘛
我写了个方法,支持获取任意类型
这个方法你可以直接copy去用,不用自己写的。
使用方法也很简单,在这里我提供一个完整的获取预制件音频剪辑的例子。上代码咯
文中不足之处欢迎批评指正
本文链接:http://www.cnblogs.com/shenggege/p/4799801.html
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 == 0) 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
相关文章推荐
- 关于Visual Stuido 2015 Community(社区) 没有C++ 32win console(控制台) 的说明和解决
- 辛巴学院-Unity-剑英陪你零基础学c#系列(一)Hello World
- unity3d 扩展NGUI —— 限制UI点击响应间隔
- Unity5内部渲染的优化3:移除固定功能
- 服务器开发之Unity3d(C#)接口回调
- Unity3d笔记:如何实现不规则多边形按钮
- unity3d 扩展NGUI Tweener —— TweenFillAmount
- Unity——MVC(很不错的解释应用)
- unity3d+sharesdk【ios篇】
- Unity3D占用内存太大的解决方法
- Unity3D开发之IOS的内扣费IAP开发
- unity 引用 移动mm 支付sdk
- Unity 游戏开发技巧集锦之创建自发光材质
- [Unity3D]Unity3D游戏开发Android内嵌视图Unity查看
- Microsoft实现的IOC DI之 Unity 、Service Locator、MEF
- 在Unity3D中动态创建对象和创建Prefab原型对象的三种方式
- unity3D中使用协程来做“多次调用一次更新”特性的一个大坑
- Unity3D显示中文的各种方案的比较
- 【Unity游戏开发之八】Unity利用语法糖添加自定义拓展方法(下)
- 【Unity游戏开发之七】Unity利用语法糖添加自定义拓展方法(上)