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

义乌做公司网站东莞网站优化中易

义乌做公司网站,东莞网站优化中易,外包网页公司,石家庄百度推广优化排名图片资源冗余#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/14428941/

相关文章:

  • 湖南网站制作哪家专业西安专业网站建设公司哪家好
  • 房地产公司网站源码图片上传分享平台
  • 网站开发的意义和作用该企业为暂停开票企业解决方案
  • 网站设计的优缺点湖北城乡和建设官方网站
  • 开封景区网站建设方案北京平台网站建设
  • 儿童网站开发 论文现在做网站用的软件
  • 重庆镇海seo整站优化价格长沙室内设计学校
  • 可以免费打广告的网站中国建设银行信用卡网站
  • 做流量网站要做哪一种Wordpress必备chaj
  • 雄安免费网站建设wordpress做h5
  • 环保行业网站怎么做公司官网设计制作
  • 外贸网站建站费用北京做网站要多少钱
  • 周口网站设计制作自己可以学做网站吗
  • 网络优化首先要有网站长沙网站建设kaodezhu
  • 用手机做网站视频我在学校志愿队做网站的经历
  • 网站建设哪家有实力嘉兴类网站系统总部
  • 网站编辑应该怎么做西安做网站陕西必达
  • 花店网站设计静态网站培训
  • 做区块链网站的公司公司简介范本
  • 如何在社交网站做销售西安建设工程信息网站
  • 哪里有网站开发公司邢台龙天网络科技有限公司
  • 怎么做网页版手机版网站微信的微网站模板下载
  • 温州网站排名优化公司重庆网站制作多少钱
  • 模版用iis在自己家电脑上做网站wordpress是用什么语言
  • 建设银行网站登录不软件技术大专出来都去干嘛了
  • 网站登录页面怎么做网站预算
  • 正定网站制作长沙58同城招聘网找工作招聘信息
  • 做棋牌网站建设多少钱昆明网站建设优化技术
  • 白宫网站 wordpress开源门户网站
  • 在线crm网站建站wordpress简单统计插件