检测prefab身上关联的shader
来源:互联网 发布:网络黑凤梨有关论文 编辑:程序博客网 时间:2024/04/30 07:22
public static void GetShaderInfo() { UnityEngine.Object[] arr = Selection.GetFiltered(typeof(UnityEngine.Object), SelectionMode.TopLevel); if (arr.Length <= 0) { Logger.Instance.LogError("请选择Project->右部分的目录!"); return; } Dictionary<string, List<string>> shaderDic = new Dictionary<string, List<string>>(); string pathChoosen = Application.dataPath.Substring(0, Application.dataPath.LastIndexOf("Assets")) + AssetDatabase.GetAssetPath(arr[0]); Logger.Instance.Log(pathChoosen); //string[] relativePaths = MyDirectory.GetWholeFilesPathFromDirectory(pathChoosen); UnityEngine.Object[] selection = Selection.GetFiltered(typeof(UnityEngine.Object), SelectionMode.DeepAssets); string[] relativePaths = (from s in selection let relativePath = AssetDatabase.GetAssetPath(s) where File.Exists(relativePath) select relativePath).ToArray(); foreach (UnityEngine.Object obj in selection) { string path = obj.name; //string[] list = AssetDatabase.GetDependencies(new string[] { path });//获取指定路径预设的依赖所有资源列表 UnityEngine.Object[] list = EditorUtility.CollectDependencies(new UnityEngine.Object[] { obj }); if (list == null || list.Length == 0) continue; for (int index = 0; index < list.Length; index++) { UnityEngine.Object target = list[index]; if (target == null) { continue; } string pathName = target.name; //string fileName = pathName.Substring(pathName.LastIndexOf('/')+1); //string extensionName = fileName.Substring(fileName.LastIndexOf('.')); if (list[index] is Shader) { if (pathName.StartsWith("Particles/")) { if (shaderDic.ContainsKey(pathName)) { shaderDic[pathName].Add(path); } else { List<string> tempist = new List<string>(); shaderDic.Add(pathName, tempist); shaderDic[pathName].Add(path); } } } } } foreach (string key in shaderDic.Keys) { List<string> list = shaderDic[key]; if (list.Count >= 1) { string url = Application.persistentDataPath + "/shader.txt"; FileIO.SaveTextFile(url, "shader =" + key + "<----------------------------"); foreach (string value in list) { FileIO.SaveTextFile(url,key +"----------"+ value); } } } }
项目中做热更的时候,发现有一些特效身上用的shader是Particle/开头的,而不是 Mobie/Particle开头的,要检测出具体哪些属于这种情况,做了个检测的方法。
0 0
- 检测prefab身上关联的shader
- Unity3D研究院之Prefab里面的Prefab关联问题
- 【技术】Unity:彻底取消prefab关联的技巧
- unity3d prefab asset object与prefab gameobject instace关联并保存prefab gameobject instance改动.
- 关于prefab的查看问题
- Unity3D中Prefab的使用
- Unity3D之Prefab的制作
- 预制件(prefab)资源的应用
- unity加载prefab的方式
- Shader实例 : 边缘检测
- unity shader-边缘检测
- Shader特效——“Canny边缘检测”的实现 【GLSL】
- [Unity Shader 技术整理]边缘检测的使用(一)
- 揪出"程序员"身上的"六宗罪"
- 揪出程序员身上的“六宗罪”
- 揪出"程序员"身上的"六宗罪"
- 唤醒自我身上的精灵
- 许三多身上的职业精神
- C语言MOOC视频地址
- C++学习笔记34——类的static成员
- 十个非常实用的开源个性化滚动View控件(eclipse篇)
- Android Apk uninstall install
- 外部链接
- 检测prefab身上关联的shader
- 大二周赛之今天有点不开心(-。-;)
- 单片机控制定时器
- C/C++用户模式下改写硬盘主引导记录(MBR)
- jQuery的deferred对象详解--转自阮一峰
- shell编程 批量创建用户(不需要文件操作)
- 阿里云服务器部署C语言开发环境
- 浅谈 Adaboost 算法
- 面试复习必备之:多线程