清除Material中的冗余资源

[Unity3D]清理material中无用的的property 摘要unity3d中的material再更换数次shader后,property的信息会残留,这会导致material select depedency的时候,发现其引用了根本没用到的texture(原因是曾经用过的shader中的property没有被去掉),这里提供了一个MaterialCleaner,解决这个问题。正文Unity中的可序列化文件都有这样一个特性,如下:例如某一个material 阅读详情

由于Unity的一个问题,导致Material中替换过的贴图,使用GetDepenecicies方法时会把替换掉的就资源也引用到。

替换方法:

public static void CleanMaterialSerializedProperty(List<Material> mats, ref string content)
    {
        for (int j = 0; j < mats.Count; j++)
        {
            if (mats[j])
            {
                bool flag = false;
                SerializedObject psSource = new SerializedObject(mats[j]);
                SerializedProperty propArr = psSource.FindProperty("m_SavedProperties");
                SerializedProperty prop = null;
                propArr.Next(true);
                do
                {
                    if (!propArr.isArray) continue;

                    for (int i = propArr.arraySize - 1; i >= 0; --i)
                    {
                        prop = propArr.GetArrayElementAtIndex(i);
                        if (!mats[j].HasProperty(prop.displayName))
                        {
                            propArr.DeleteArrayElementAtIndex(i);
                            flag = true;
                        }
                    }
                } while (propArr.Next(false));
                psSource.ApplyModifiedProperties();
                if(flag)
                    content += AssetDatabase.GetAssetPath(mats[j]) + "\n";
            }
        }
        AssetDatabase.SaveAssets();
    }

        

unity引用类型序列化_[Unity]清除material中冗余的引用 问题最近发现包体的bundle加载出现了很多奇怪的关联引用,于是开始追查又是哪个小朋友胡乱放资源了,最后发现是一些material中,莫名多了一些对其他texture的引用,导致产生依赖(如何查依赖关系会放到另一篇里记录)。分析观察这些material,用的都是一些非常基础的自带shader:然而观察其文本文件可见,有很多奇怪的引用(这命名一看就知道是怎么产生的了。。):有很多texture还引用... 阅读详情

相关推荐

Unity资源冗余排查与优化:从AssetBundle到Addressables的完整解决方案

在Unity应用开发中,内存管理是保障应用性能与稳定性的核心环节。其原理在于,引擎通过资源标识与依赖关系将磁盘资源加载至内存,若管理不当,极易产生资源冗余,即同一资源在内存中存在多份拷贝。这不仅持续占用宝贵内存,更可能导致卡顿、闪退等严重问题,对需要长时运行的游戏或应用尤为致命。从技术价值看,高效的内存管理能显著提升应用流畅度与稳定性,是项目优化的关键。常见的应用场景包括手游开发、长期在线应用及任何对性能敏感的项目。本文聚焦Unity开发中的资源冗余问题,深入剖析AssetBundle打包策略、Addres

chengyixian7877的博客 379

【MaterialPropertyDrawer】unity Shader Material 面板美化

https://docs.unity3d.com/ScriptReference/MaterialPropertyDrawer.html   Description Base class to derive custom material property drawers from. Use this to create custom UI drawers for your materia...

poem_of_sunshine的专栏 1628

Android Material Design 兼容库实践指南

Material Design 是 Android 系统的核心设计语言,通过标准化组件实现跨版本视觉一致性。其兼容库(Material Components for Android)解决了 UI 组件在 Android 5.0 及以上版本的适配问题,提供预设动画、触摸反馈等交互规范。作为现代移动开发的基础设施,该库能提升开发效率40%以上,特别适用于电商等高交互场景。技术实现上需配置 material:1.9.0 依赖,继承 Material3 主题,并掌握按钮体系、文本输入框等核心组件的使用技巧。深色模式

weixin_30781433的博客 493

Unity-Material去除无用的材质属性

当我们在unity中使用材质的时候,我们会发现,当这个材质切换到上一个shader的时候,我们那个shader的属性都会保存,包括贴图,在上个项目的优化过程中,我们TA也发现,一个material材质依赖了它没有的属性贴图,这个是unity的自身设计导致,但是如果它依赖了其他的资源,那么就可能造成不必要的资源冗余等问题,简单来说就是寻找一种方法可以将材质中保存的无用属性剔除,在看了...

Rhett 4396

Material Design(全新的页面设计语言)

Design Support库 将Material Design中最具有代表性的一些控件和效果进行了封装,使得开发者即使在不了解Material Design的情况下也能非常轻松的将自己的应用Material化。 以下将总结Materia控件 一、Toolbar(标题栏控件) 1、Android中自带的标题栏控件是ActionBar。但是它只能用于活动的顶部,所以现在都改用Toolbar 2、清除...

求职之路 916

Material Design在Android中的应用实践

通知栏是Android系统中非常重要的组件,它负责向用户显示应用程序的重要信息。自定义通知栏可以提供更丰富的用户交互体验,以及满足特定业务需求。本章节将详细介绍Android通知栏的基础知识、自定义实现步骤以及高级自定义技巧。是Android Support Library提供的一个兼容性类,用于构建现代的通知。以下是构建通知的基本步骤:// 创建一个通知构建器.setSmallIcon(R.drawable.notification_icon) // 设置小图标。

weixin_42393362的博客 1109

Unity 材质无用的引用清理

整理资源的时候 发现材质属性面板上只有四张贴图 但是材质球确有五张贴图的依赖 想着写个工具处理下 没想到网上一搜已经有小哥写好了工具 直接拿来用了 原文链接 代码上做了简洁 using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System; using UnityEngine; using UnityEditor; /// <summary> /// 如果材

qq_25670983的博客 5686

MaterialPro 后台模板

MaterialPro Admin是管理仪表板和控制管理面板的流行开源WebApp模板。Monster是完全响应的HTML模板,基于CSS框架Bootstrap 4 Beta。它利用其设计中的所有Bootstrap组件,并重新设计了许多常用的插件来创建一致的设计,可以将其用作后端应用程序的用户界面。MaterialPro Admin基于模块化设计,可以轻松定制和构建。

qt-material 图标资源动态生成器(qt_material.resources.generate)源码解析与实战指南

本文围绕 qt-material 仓库中 `qt_material.resources.generate` 模块展开,深入剖析 `ResourseGenerator` 类如何把主题 XML 中定义的主色、次色与禁用色注入 SVG 图标模板,在运行期动态生成整套主题图标。读完本文,你将掌握该模块的目录约定、`generate()` 与 `replace_color()` 的实现原理,以及它如何被 `

gitblog_00140的博客 338

2024高校网络安全管理运维赛题目--复现+题目+wp

官方writeup集思广益比较好的备份。

书山有路勤为径,学海无涯苦作舟 1323

详解岭回归与L2正则化

最小二乘法存在不可逆和病态问题,导致解析解不可计算或不稳定,岭回归是一种有效的解决方法,以损失无偏性来换取稳定解, 本文介绍详细介绍了岭回归的基本原理,并从L2正则化角度来进行了解释。

Luoyingfeng的博客 1万+

资源优化:1、清理序列化冗余文件

前提:切换资源序列化模式为Force Text (一般在公司就是这个,因为git只能用text) 1.清理序列化文件冗余引用 材质的shader,gameobject组建的Monobehavior 开发过程中,可能之前已经赋值过,但是后来又把 shader的property或者代码的序列化参数删掉了 但是这些参数删除后,材质或者GameObject的Prefab文件中,该参数的序列化数据并未被删除 会导致AssetDataBase.GetDependencies之类的方法,取得引用时,会带入不需要的资源 a

东北砍王的栖息地 612

逐行逐句进一步了解SurroundOcc(一)

通过分析中的模型构建过程,理解了从配置文件到模型实例化的整个流程。构建过程的核心是通过build和等函数,逐步将配置文件解析并生成模型的各个模块对象,最终组合成一个完整的模型结构。这一过程涉及多个类和函数的调用,其中函数是生成对象的关键,它能够从配置字典中提取必要信息并生成对应的类实例。

lovely_yoshino的博客 8112

深入解析 Material Components Android 的 BottomNavigationView:Material 3 导航栏的完整实现与定制指南

Material Components for Android(以下简称 MDC-Android)中的 `BottomNavigationView` 是 Material 3(M3)"Navigation bar(导航栏)"组件的官方实现,用于让用户在小屏设备上通过一次点击在多个顶级视图之间快速切换。本文以 [docs/components/BottomNavigation.md](https:/

gitblog_01271的博客 884

基于Xilinx_IBERT的光纤接口眼图测试

基于Xilinx_IBERT的光纤接口眼图测试

Coca_Tian的博客 1万+

深入解析FOC电流环PI参数整定:从理论到实践

本文深入解析了FOC(磁场定向控制)中电流环PI参数整定的核心原理与实践方法。文章从永磁同步电机模型出发,详细阐述了基于带宽与零极点对消的工程法及考虑逆变器延迟的二阶系统整定法两种经典策略,并提供了从理论计算到安全上电调试的完整步骤与常见问题解决方案,帮助工程师精准调校电机控制性能。

weixin_29164497的博客 449

终极Material-UI芯片输入解决方案:material-ui-chip-input完全指南

material-ui-chip-input是一个基于Material-UI的芯片输入字段组件,它为开发者提供了简单而强大的标签式输入体验,灵感来源于Angular Material的芯片输入设计。无论是构建标签系统、收件人选择器还是兴趣标签功能,这个轻量级组件都能帮助你快速实现专业级UI效果。 ## 为什么选择material-ui-chip-input? 在现代Web应用中,标签式输入已成

gitblog_00813的博客 715

Cesium WebGL性能调优实战:从卡顿根源到流畅渲染

本文深入探讨Cesium WebGL性能调优的实战技巧,从硬件配置、框架适配到3D Tiles加载策略,全面解决卡顿问题。通过强制启用独立显卡、优化浏览器设置、避免Vue内存陷阱等实用方法,显著提升3D地图应用的流畅度。文章还分享了高级调试工具和实战避坑经验,帮助开发者实现高效渲染。

weixin_27215337的博客 419

图片归档工具:UI美化与用户体验优化(qt-material + QDateEdit)

本文介绍了图片归档工具的UI优化方案,主要包含四个功能点:1. 使用qt-material主题美化界面,解决PyInstaller打包时的资源路径问题;2. 为QDateEdit添加日历弹出选择功能;3. 配置QTableWidget实现整行选中模式;4. 添加清除按钮优化输入框操作。文章详细说明了各功能的实现代码和关键配置参数,包括主题安装、日历控件属性设置、表格选择行为模式等,并提供了界面布局示意图和常见问题解决方案。最后预告了下一篇将介绍PyInstaller打包优化技术。

caixuwen的专栏 208

YOLOv11改进 - C3k2融合 | C3k2融合CBSA 收缩 - 广播自注意力:轻量级设计实现高效特征压缩,优化处理效率 | NeurIPS 2025

本文介绍收缩 - 广播自注意力(CBSA)((Contract-and-Broadcast Self-Attention))机制,并将其集成到YOLOv11中。传统注意力机制存在黑盒难理解、计算复杂度高的问题,CBSA通过算法展开推导出本质上可解释且高效的注意力机制。它先从输入数据中选出少量代表性tokens,接着对代表进行收缩计算,再将结果广播给所有原始数据。该机制计算量线性增长,具有明确数学解释,还能统一多种注意力机制。我们将CBSA代码集成到YOLOv11的C3k2模块中。实验证明,改进后的YOLOv

魔改工程师的博客 852

基于深度学习的推荐系统设计与实现

基于深度学习的推荐系统设计与实现 作者:禅与计算机程序设计艺术 / Zen and the Art of Computer Programming / TextGenWebUILLM 基于深度学习的推荐系统设计与实现 关键词:深度学习, 推荐系统, 用

AI天才研究院 1079

如何快速搭建Material Dashboard Lite:从安装到运行的完整指南

想要快速搭建一个现代化的Material Design仪表板吗?Material Dashboard Lite是您的完美选择!这款免费的开源仪表板模板基于Google的Material Design Lite框架,专为新手和普通用户设计,提供响应式布局和优雅的暗色主题。无论您是开发个人项目还是构建企业管理系统,这个教程将带您从零开始,在几分钟内完成Material Dashboard Lite的安

gitblog_01020的博客 735

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Material Sense 部署指南:Docker容器化与GitHub Pages发布

Material Sense 是一个基于 React Material UI 的现代化模板,用于创建包含向导、图表和范围控件的丰富应用程序。这个强大的前端框架提供了响应式设计、图表集成和路由功能,让开发者能够快速构建美观的企业级应用。本文将为您提供完整的 Material Sense 部署指南,涵盖 Docker 容器化部署和 GitHub Pages 发布的详细步骤。🚀 ## 📦 Mate

gitblog_00201的博客 1068

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

AngularJS Material 迁移指南:从 md- 到 mat- 的升级实战与架构对比

本文是 AngularJS Material 官方迁移文档([docs/content/migration.md](https://link.gitcode.com/i/444b1d8d7262065517c8bb9037263c9f))的深度解析,面向已有 AngularJS Material(`v1.1.9+`)应用并计划长期维护、希望迁移到 Angular Material 与 Angula

gitblog_00143的博客 1078

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Android版本迭代清除无用资源

之前讲到如何清楚style、string、coclr等等资源文件,那mipmap、drawable如何提出无用资源呢? 发现大家普遍用的是使用第三方jar来查询的,本着能不用就不用第三方的原则;终于发现了其他方法:原来as自身带的都有(在这里不得不感慨as的强大),隐藏小功能很多,大家没事了可以挖掘共享一下。 Android Link 下面就说一下使用过程导航栏点击Analyze->

MrLiu253的博客 606
上一篇: Python调用adb实现自动化安装Apk
下一篇: FrameProfiling详细使用方法
MonoBehaviour
博客等级 码龄10年 22粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值