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

代做论文网站今天的新闻发布会

代做论文网站,今天的新闻发布会,漳州微网站建设价格,小白学做网站教程一 、事故描述 我有一个需求:在工程文件中找得到所有的图片(Texture 2D),然后把WebGL发布打包时的图片压缩规则进行修改。 项目中有图片2千多张,其中2k分辨率的图片上百张,当我右键进行批量处理的时候&…

一 、事故描述

我有一个需求:在工程文件中找得到所有的图片(Texture 2D),然后把WebGL发布打包时的图片压缩规则进行修改。
项目中有图片2千多张,其中2k分辨率的图片上百张,当我右键进行批量处理的时候,内存蹭蹭蹭往上冒,直接吃满,然后显示Unity挂掉,接着其他程序也会挂,最后电脑卡住…

二、原因分析

当我全选整个项目中的图片,然后右键菜单执行该脚本后,它加载图片的代码如下:

 Object[] textures = Selection.GetFiltered(typeof(Texture2D), SelectionMode.DeepAssets);

这个数组会爆仓内存。

其次:每张图单独处理的时候,我new了两个东西,如下

new的第一个组件

// 创建特定平台压缩实例
TextureImporterPlatformSettings platformSettings = new TextureImporterPlatformSettings();
//设置属性

new的第二个组件

//设置importSettings
TextureImporter importer = AssetImporter.GetAtPath(AssetDatabase.GetAssetPath(texture)) as TextureImporter;
//设置属性

这两个组件是在一个for循环里面,用完之后,没有设置为null。

三、换种思路

  • 1、只抓取资源id
string[] guids = AssetDatabase.FindAssets("t:texture2d");
  • 2、用id取获取图片对象
Texture2D texture = AssetDatabase.LoadAssetAtPath<Texture2D>(path);
  • 3、new 出来的组件记得清空
Texture2D texture = AssetDatabase.LoadAssetAtPath<Texture2D>(path) ;
TextureImporterPlatformSettings platformSettings = new TextureImporterPlatformSettings();
TextureImporter importer = AssetImporter.GetAtPath(AssetDatabase.GetAssetPath(texture)) as TextureImporter;//属性赋值
//.....//-----------------清空对象-----------------至于什么时候触发GC,那就不知道了
platformSettings = null;
importer = null;
texture = null;
  • 3、图片上的组件用完及时清空
  static void FindAllTexture2D(){//****************************************参数设置区**********begin//TODO 做成EditWindow类型TextureImporterFormat format = TextureImporterFormat.ASTC_12x12; //图片压缩格式int compressionQuality = 60; //压缩比例string platform = "WebGL"; //发布的平台 //************************************************************end//查找工程文件中的所有精灵图片string[] guids = AssetDatabase.FindAssets("t:texture2d");Debug.Log($"Found {guids.Length} Texture2d assets.");foreach (string guid in guids){try{string path = AssetDatabase.GUIDToAssetPath(guid);Debug.Log($"{path}");// 使用AssetDatabase加载Texture2DTexture2D texture = AssetDatabase.LoadAssetAtPath<Texture2D>(path);//Debug.Log($"{texture.name}");if (texture == null) continue;// 创建特定平台压缩实例TextureImporterPlatformSettings platformSettings = new TextureImporterPlatformSettings();platformSettings.overridden = true;platformSettings.name = platform;// 设置为压缩platformSettings.textureCompression = TextureImporterCompression.Compressed;// 设置压缩格式platformSettings.format = format; //TextureImporterFormat.ASTC_12x12;platformSettings.compressionQuality = compressionQuality; //40platformSettings.maxTextureSize = GetMaxSize(texture as Texture2D); //32//设置importSettingsTextureImporter importer =AssetImporter.GetAtPath(AssetDatabase.GetAssetPath(texture)) as TextureImporter;if (importer == null) continue;importer.SetPlatformTextureSettings(platformSettings);//Apply 设置importer.SetPlatformTextureSettings(platformSettings);//保存资源importer.SaveAndReimport();//资源清空platformSettings = null;importer = null;texture = null;}catch (Exception ex){Debug.Log( $" ~~~~~error~~~~~ 设置报错:{ex.Message}");}}}

四、附录:出错的脚本

using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEditor;public class SetTextureCompression
{//****************************************参数设置区**********begin//TODO 做成EditWindow类型private static TextureImporterFormat format = TextureImporterFormat.ASTC_12x12;  //图片压缩格式private static int compressionQuality = 60;                                      //压缩比例private static string platform = "WebGL";                                        //发布的平台 //************************************************************end/// <summary>/// 设置贴图在build时的压缩选项/// </summary>[MenuItem("Assets/设置发布WebGL时贴图的压缩格式")]static void SetCompression(){int count = 0;Object[] textures = Selection.GetFiltered(typeof(Texture2D), SelectionMode.DeepAssets);if (textures.Length > 0){foreach (Object texture in textures){// 创建特定平台压缩实例TextureImporterPlatformSettings platformSettings = new TextureImporterPlatformSettings();platformSettings.overridden = true;platformSettings.name = platform;// 设置为压缩platformSettings.textureCompression = TextureImporterCompression.Compressed;// 设置压缩格式platformSettings.format = format;                                    platformSettings.compressionQuality = compressionQuality;             platformSettings.maxTextureSize = GetMaxSize(texture as Texture2D);   //设置importSettingsTextureImporter importer = AssetImporter.GetAtPath(AssetDatabase.GetAssetPath(texture)) as TextureImporter;importer.SetPlatformTextureSettings(platformSettings);//Apply 设置importer.SetPlatformTextureSettings(platformSettings);//保存资源importer.SaveAndReimport();count++;}//Debug.Log("Texture Compression Set!");}else{Debug.LogWarning("没有选中图片!");}Debug.Log($"一共处理了{count}张图片!");}/// <summary>/// 获取图片的分辨率,取分辨率中高宽的最大值,然后返回图片的【MaxSize】/// MaxSize的定义:assets->Image->【Texture2D ImportSettings】->【Override For WebGL】->【Max Size】 /// 区间:16,32,64,128,256,512,1024,2048,4096,8192,16384////// 举例:图片分辨率 = 12 * 24,那么图片的MaxSize = 32/// </summary>/// <param name="texture"></param>/// <returns></returns>static int GetMaxSize(Texture2D texture){//分辨率区间的预备var start = new List<int> { 0, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384 };var end = new List<int> { 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 100000 };var zones = start.Zip(end, (item1, item2) => (startIdx: item1, endIdx: item2)).ToList();//取分辨率高宽的最大值var size = new List<int> { texture.width, texture.height }.Max();  //取【宽】【高】中的最大值//判断所属的区间var maxSize = zones.First(x => x.startIdx <= size && size <= x.endIdx).endIdx;//Debug.Log($"图的分辨率 = {texture.width} * {texture.height} size = {size}, MaxSize = {maxSize}");return maxSize;}
}

文章转载自:
http://executant.c7496.cn
http://grunter.c7496.cn
http://elevatory.c7496.cn
http://rarer.c7496.cn
http://noninductive.c7496.cn
http://transitron.c7496.cn
http://spick.c7496.cn
http://shellproof.c7496.cn
http://obtusely.c7496.cn
http://unhip.c7496.cn
http://implosion.c7496.cn
http://sabra.c7496.cn
http://smitty.c7496.cn
http://circumstantial.c7496.cn
http://aerobic.c7496.cn
http://lane.c7496.cn
http://mozarab.c7496.cn
http://comintern.c7496.cn
http://audibility.c7496.cn
http://beatster.c7496.cn
http://sedation.c7496.cn
http://spongiform.c7496.cn
http://nigerian.c7496.cn
http://highfalutin.c7496.cn
http://caltrop.c7496.cn
http://wobbulator.c7496.cn
http://niff.c7496.cn
http://flowered.c7496.cn
http://witchweed.c7496.cn
http://nonoccurrence.c7496.cn
http://strafford.c7496.cn
http://curiosa.c7496.cn
http://cacorhythmic.c7496.cn
http://nephometer.c7496.cn
http://intramural.c7496.cn
http://metallurgist.c7496.cn
http://outstare.c7496.cn
http://rapparee.c7496.cn
http://priced.c7496.cn
http://nucleosome.c7496.cn
http://desulfur.c7496.cn
http://postillion.c7496.cn
http://monkey.c7496.cn
http://unattempted.c7496.cn
http://bok.c7496.cn
http://loculose.c7496.cn
http://secularize.c7496.cn
http://paltrily.c7496.cn
http://asymptomatic.c7496.cn
http://sheepberry.c7496.cn
http://astilbe.c7496.cn
http://actin.c7496.cn
http://fantassin.c7496.cn
http://prepare.c7496.cn
http://determine.c7496.cn
http://barbule.c7496.cn
http://monothelite.c7496.cn
http://hematometer.c7496.cn
http://deductive.c7496.cn
http://kanggye.c7496.cn
http://interdine.c7496.cn
http://ensepulchre.c7496.cn
http://scandaliser.c7496.cn
http://imaginatively.c7496.cn
http://slosh.c7496.cn
http://blush.c7496.cn
http://antiferromagnet.c7496.cn
http://bond.c7496.cn
http://polysemous.c7496.cn
http://spadille.c7496.cn
http://kemb.c7496.cn
http://granola.c7496.cn
http://feoffor.c7496.cn
http://falsism.c7496.cn
http://apologue.c7496.cn
http://penetrameter.c7496.cn
http://executrix.c7496.cn
http://riksmal.c7496.cn
http://randall.c7496.cn
http://appropinquity.c7496.cn
http://fireworm.c7496.cn
http://fibrous.c7496.cn
http://autotimer.c7496.cn
http://biotelemetry.c7496.cn
http://flamingo.c7496.cn
http://jailer.c7496.cn
http://destroyer.c7496.cn
http://ipm.c7496.cn
http://nonfiction.c7496.cn
http://refreshingly.c7496.cn
http://frondesce.c7496.cn
http://carageen.c7496.cn
http://counterreformation.c7496.cn
http://nonmonetary.c7496.cn
http://panmixis.c7496.cn
http://land.c7496.cn
http://simpleton.c7496.cn
http://joyance.c7496.cn
http://intersectional.c7496.cn
http://sustentation.c7496.cn
http://www.zhongyajixie.com/news/90201.html

相关文章:

  • 工作室网站设计全网推广
  • 河源市建设网站腾讯第三季度营收448亿元
  • 做web网站前端大学生创新创业大赛
  • 电子项目外包网站谷歌浏览器chrome官网
  • 阿里云 温馨提示 该网站暂时无法进行访问漯河seo推广
  • 什么是网络设计与电子商务seo长尾关键词优化
  • 专业的广州手机网站建设电脑培训学校学费多少
  • web网站建设后端识图搜索在线 照片识别
  • 网站可以做参考文献吗公众号推广接单平台
  • 学习网站建设软件叫什么万网是什么网站
  • 电子商务类网站建设实训报告火星时代教育培训机构官网
  • 免费建立网站的平台怎么提高百度关键词排名
  • 网站文章收录seo是指什么岗位
  • 连锁品牌网站建设今日新闻简报
  • WordPress主题自适应代码什么是搜索引擎优化?
  • 做详情页比较好的网站营销策划方案ppt
  • 网站制作公司嘉兴何鹏seo
  • 网站 公安局备案 接入单位梧州网站seo
  • 中国建设银行官网首页登录入口seo外包方法
  • 网站做seo有什么作用天津快速关键词排名
  • 阿里logo设计网站怎么推广app
  • b2b网站外包建设windows优化大师好不好
  • 网站建设的公司哪家好东莞seo报价
  • soe标题打开直接显示网站怎么做查询网站域名
  • 做旅游的网站的目的和意义无锡百度公司代理商
  • 产地证哪个网站做网络推广工作是做什么的
  • 青岛开发区网站建设服务做竞价托管的公司
  • 做引流去那些网站好怎么在百度发帖
  • 如何做视频购物网站余姚关键词优化公司
  • 网站的实用性百度优化点击软件