unity 更换standard shader

最近在优化内存的时候,发现了一个内存占用非常高的shader
太坑了、、、发布出来的web包 包体非常小,资源也非常少,却在进入场景的一瞬间内存暴涨到1个多G
通过Profiler观察,shaderlab占用273M,非常高(小项目,一共就用了几个shader)
看工程内使用最多的shader是standard
做了一个测试,把standard换掉

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;

public class ExchangeMaterials : MonoBehaviour
{
	[MenuItem("Tools/ExchangeMaterial")]
	static void ExchangeMaterials()
	{
		var allMaterials = AssetDatabase.FindAssets("t: Material");
		foreach (var guid in allMaterials)
		{
			var path = AssetDatabase.GUIDToAssetPath(guid);
			Material m = AssetDatabase.LoadAssetAtPath(path, typeof(Material)) as Material;
			if (m != null)
			{
				if (m.shader.name == "Standard")
				{
					m.shader = Shader.Find("AAA");
				}
			}
		}
	}
}

找出项目中所有的standard更换为测试shader,此时发现有些shader不能被取出来更换
在这里插入图片描述
又一阵挠头之后发现是FBX导入的设置相关
在这里插入图片描述这样设置参数,会生成一个模型自带的material,就可以更换shader啦

重新打包,发现出包速度快了好多倍,心里预感这次一定是找到了方向,O(∩_∩)O哈哈~
运行之后内存减少了600M+,内存终于降下来了,也有点心有余悸,没想到一个没观察到的小小细节内存占用这么高!!!此时再看Profiler,shaderlab占用只有1.1M了、、、

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值