当前位置: 首页 > news >正文

义乌做公司网站网站创建app

义乌做公司网站,网站创建app,学游戏设计去哪个学校,陕西省建设八大员官方网站图片资源冗余#xff1a; UPR unity的性能优化工具检查资源 1.检查纹理读/写标记 开启纹理资源的读/写标志会导致双倍的内存占用 检查Inspector - Advanced - Read/Write Enabled选项 2.检查纹理资源alpha通道 如果纹理的alpha通道全部为0#xff0c;或者全部为2…图片资源冗余 UPR unity的性能优化工具检查资源 1.检查纹理读/写标记 开启纹理资源的读/写标志会导致双倍的内存占用 检查Inspector - Advanced - Read/Write Enabled选项 2.检查纹理资源alpha通道 如果纹理的alpha通道全部为0或者全部为255可以认为其中不包含有效信息此时应禁用’Alpha源’标志否则会浪费这部分的内存。 检查Inspector - Alpha Source选项 3.检查纯色纹理 纯色纹理的使用可能可以由一些设置来代替。由于某些情况下纯色纹理是必不可少的此警告仅会在所使用的纹理较大(大于设定值, 默认为16x16)时才会触发。 Custom Parameters: heightThreshold : 16widthThreshold : 16 4.检查重复纹理 问题1 方案可继承AssetPostprocessor对资源改动的时候检查是否有开启读/写标记 问题23 4 方案定期检查 其中问题23只需要判断颜色通道比较简单不做解释 问题4 解决 1.遍历所有贴图 用字典缓存 找到重复的资源 2.找到项目下所有材质并且缓存 3.找到引用该重复贴图的材质 4.判断该材质所有引用贴图字段 如有和重复贴图相同 则替换 5.删除重复贴图 代码 static void RemoveReportTexture(string[] searchInFolders){Dictionarystring, string md5dic new Dictionarystring, string();HashSetint deleteTexInsId new HashSetint();//string[] guids AssetDatabase.FindAssets(t:Texture, new string[] { Assets/actor, Assets/FX, Assets/scene, });string[] guids AssetDatabase.FindAssets(t:Texture, searchInFolders);string[] matFiles null;string[] matFilesContent null;//Debug.Log(贴图 guids.Length);//1.遍历所有贴图 用字典缓存 找到重复的资源 int progress 0;foreach (var assetGuid in guids){string assetPath AssetDatabase.GUIDToAssetPath(assetGuid); // 从GUID拿到资源的路径bool isCancel EditorUtility.DisplayCancelableProgressBar(移除重复的贴图, assetPath, (float)progress / (float)guids.Length);progress;string md5 GetMD5Hash(Path.Combine(Directory.GetCurrentDirectory(), assetPath)); //获取md5string path;md5dic.TryGetValue(md5, out path);if (path null){md5dic[md5] assetPath;// Debug.Log(assetPath);}else{Debug.LogFormat(资源重复{0}{1}, path, assetPath);if (matFiles null){//2.找到所有材质并且缓存Liststring withoutExtensions new Liststring() { .mat };matFiles Directory.GetFiles(Application.dataPath, *.*, SearchOption.AllDirectories).Where(s withoutExtensions.Contains(Path.GetExtension(s).ToLower())).ToArray();matFilesContent new string[matFiles.Length];for (int i 0; i matFiles.Length; i){matFilesContent[i] File.ReadAllText(matFiles[i]);}}Texture2D tex AssetDatabase.LoadAssetAtPathTexture2D(path); //保留的图Texture2D deleteTex AssetDatabase.LoadAssetAtPathTexture2D(assetPath); //删除的图//3.找到引用该贴图的所有材质for (int startIndex 0; startIndex matFiles.Length; startIndex){string file GetRelativeAssetsPath(matFiles[startIndex]);if (Regex.IsMatch(matFilesContent[startIndex], assetGuid)){Material material AssetDatabase.LoadAssetAtPathMaterial(file);bool isUseTex false;var textureNames material.GetTexturePropertyNames();//Debug.Log(遍历所有需要修改替换贴图的材质 file ,贴图数: textureNames.Length);//4.判断该材质所有引用贴图字段 如有和重复贴图相同 则替换for (int j 0; j textureNames.Length; j){if (material.HasTexture(textureNames[j])) // 该方法获取不到不属于该shader的贴图切换材质后unity会保留之前shader的信息{Texture texture material.GetTexture(textureNames[j]); // 获取材质上的贴图引用if (texture ! null){//Debug.Log(获取到图片名字 texture.name);if (texture.name deleteTex.name){isUseTex true;material.SetTexture(textureNames[j], tex);Debug.Log(修改的材质 file 的贴图 assetPath ,assetGuid: assetGuid ,替换为 path 修改材质propertyName textureNames[j]);EditorUtility.SetDirty(material);}}}}}}//5.替换完所有材质删除该重复贴图//if(isChangeSucceedCount ! referencesMatPath.Count)//{// Debug.LogError(修改失败isChangeSucceedCount isChangeSucceedCount referencesMatPath.Count referencesMatPath.Count);//}//else//{// AssetDatabase.DeleteAsset(assetPath);// Debug.LogError(修改成功);//}Debug.Log(DeleteAsset: assetPath);deleteTexInsId.Add(deleteTex.GetInstanceID());AssetDatabase.DeleteAsset(assetPath);}}AssetDatabase.SaveAssets();EditorUtility.ClearProgressBar();if (deleteTexInsId.Count 0){int checkProgress 0;for (int startIndex 0; startIndex matFiles.Length; startIndex){string file GetRelativeAssetsPath(matFiles[startIndex]);bool isCancel EditorUtility.DisplayCancelableProgressBar(检查材质是否缺少贴图, file, (float)checkProgress / (float)matFiles.Length);checkProgress;Material material AssetDatabase.LoadAssetAtPathMaterial(file);SerializedObject serializedMaterial new SerializedObject(material);SerializedProperty texturesProperty serializedMaterial.FindProperty(m_SavedProperties.m_TexEnvs);foreach (SerializedProperty textureProperty in texturesProperty){string propertyName textureProperty.displayName;SerializedProperty textureReference textureProperty.FindPropertyRelative(second.m_Texture);// 检查贴图引用是否丢失if (material.shader.FindPropertyIndex(propertyName) 0 textureReference.objectReferenceValue null deleteTexInsId.Contains(textureReference.objectReferenceInstanceIDValue)){Debug.LogError($移除重复的模型贴图导致 Missing texture in material: {material.name}, Property: {propertyName});}}}EditorUtility.ClearProgressBar();}} 主界面图集过多 主界面UI也就几个界面但通过unity的Memory Profiler去看内存的时候 却发现了30个左右的图集原因是因为拼接资源的时候没注意导致一个界面依赖了好几个图集简单解决就是把主界面和其他界面一起用到的图片放到公用图集里去然后就调整对应的图集代码界面
http://www.hkea.cn/news/14421764/

相关文章:

  • 怎么建设幸运28网站猎头公司属于什么行业
  • 海西州公司网站建设wordpress 首页分栏
  • 定制网站大概多少钱自己可以做网站么
  • 对网站建设的要求上海工商网企业信息查询系统
  • 杭州上城区建设局网站个人接装修活
  • 网站设计的优缺点怎么弄一个自己的网址
  • 深圳营销型网站建设方案服务商湘潭有实力的关键词优化公司
  • 网站二级目录最权威的品牌排行榜网站
  • 门户网站建设技术要求企业查询系统官网天眼查免费
  • 九江网站推广北京装修设计公司有哪些
  • 个人网站需要几个备案百度推广后台登录首页
  • 中华建设网算什么级别网站漳州手工外发加工网
  • 淮北网站开发公司广东佛山企业
  • 网站如何做线上支付功能学做网站学费
  • 网站制作软件手机网页广告太多怎么屏蔽
  • 如何把代码放在网站首页教程湖北最新数据消息
  • 我要做一个网站 需要营业范围吗无锡企业建站程序
  • 上海网站建设价wordpress文章页模板
  • 重庆外贸网站建设公司做微信公众号的网站有哪些内容
  • 莞城建设网站微信小程序官方教程
  • 定制手机网站网络营销策划方案模板
  • 苏州工业园区做政务网站的公司网站美工建设软件下载
  • 杭州网站制作专业恩城seo的网站
  • 网站收录没排名公司网站开发可行性报告
  • 云南网站设计模板搬瓦工做网站方法
  • 网站一般用什么做的建好的网站怎么用
  • 陕西网站建设公司哪有内容展示型网站特点
  • 东莞能做网站的公司徐州做网站的公司
  • 易语言做购物网站unity 做网站
  • 关于节约化建设网站的表态发言免费缩短链接