unity图片内存优化 涉及到代码进行缩放
来源:互联网 发布:淘宝卖化妆品月赚20万 编辑:程序博客网 时间:2024/06/18 18:05
我基本都是做移动端,但也涉及到网页端,主要还是针对移动端优化,优化涉及到的问题基本都是图片的使用方式,图片一定要使用2的N次方,这个是一定一定的,NGUI图集默认是大图是2的N次方,所以使用他的图集的时候不用考虑,大图烘焙图我建议使用2的N次方的大小的图,要不大家迟早会跳进这个坑,然后如果你使用的图的大小比实际图小的时候,可以使用uv算法,也可以用裁剪法,
- public Vector2[] ReturnNewUV(Vector2[] uvpoints, Texture2D tex, Vector2[] ActualPoint)
- {
- float length = 0;//需要图的长度
- float width = 0;//需要图的宽度
- Vector2 v2_default = ActualPoint[0];
- float minX = v2_default.x;
- float maxX = v2_default.x;
- float minZ = v2_default.y;
- float maxZ = v2_default.y;
- for (int i = 0; i < ActualPoint.Length; i++)
- {
- Vector2 v2 = ActualPoint[i];
- if (minX > v2.x)
- {
- minX = v2.x;
- }
- if (maxX < v2.x)
- {
- maxX = v2.x;
- }
- if (minZ > v2.y)
- {
- minZ = v2.y;
- }
- if (maxZ < v2.y)
- {
- maxZ = v2.y;
- }
- }
- length = (maxX - minX) ;//根据你的点集,算出你使用的长度
- width = (maxZ - minZ) ;<span style="font-family: Arial, Helvetica, sans-serif;">//根据你的点集,算出你使用的宽度</span>
- float minXX = uvpoints[0].x;
- float maxXX = uvpoints[0].x;
- float minZZ = uvpoints[0].y;
- float maxZZ = uvpoints[0].y;
- for (int i = 0; i < uvpoints.Length; i++)
- {
- Vector2 v2 = uvpoints[i];
- if (minXX > v2.x)
- {
- minXX = v2.x;
- }
- if (maxXX < v2.x)
- {
- maxXX = v2.x;
- }
- if (minZZ > v2.y)
- {
- minZZ = v2.y;
- }
- if (maxZZ < v2.y)
- {
- maxZZ = v2.y;
- }
- }//uv点集中最大x,y值
- //把这些uv点除以最大x,y值,保证uv在(0~1)之间,这样就可以把一张图铺上去,如果想根据你的需要去使用这张图的比例,就乘以你的使用大小/图片的实际大小
- for (int i = 0; i < uvpoints.Length; i++)
- {
- //uvpoints[i].x / maxX 缩小uv的X保证x在0~1之间
- //uvpoints[i].y / maxZ) 缩小uv的Z保证z在0~1之间
- //length / tex.width 当前长度与图片长度的比例
- //wight / tex.height 当前宽度与图片宽度的比例
- uvpoints[i] = new Vector2((uvpoints[i].x / maxXX*length / tex.width ) , (uvpoints[i].y / maxZZ*wight / tex.height ) );
- }
- return uvpoints;
- }
使用方法mesh.uv = ReturnNewUV(,,,,)还有一种方法是图片裁剪的方法
- float xNum = 0;
- float yNum = 0;
- xNum = Mathf.Abs(maxX - minX) ;
- yNum = Mathf.Abs(maxZ - minZ) ;
- float imgWidth = texture.width;//texture原始图片
- float imgHeight = <span style="font-family: Arial, Helvetica, sans-serif;">texture</span><span style="font-family: Arial, Helvetica, sans-serif;">.height;</span>
- int pixelsW = (int)imgWidth;
- int pixelsH = (int)imgHeight;
- Color[] colors = <span style="font-family: Arial, Helvetica, sans-serif;">texture</span><span style="font-family: Arial, Helvetica, sans-serif;">.GetPixels(0, 0, pixelsW, pixelsH);//获取从(0~pixeW)宽度,(0~pixeH)高度的图片裁剪</span><span style="font-family: Arial, Helvetica, sans-serif;">
- /span> curNewT2D = new Texture2D(pixelsW, pixelsH);//new一个新的需要这个大小的图片
- curNewT2D.SetPixels(colors);//把上面获得的赋给它
- curNewT2D.Apply();//curNewT2D就是新的一张图,就是自己设定的大小
本文来自:http://blog.csdn.net/itolfn/article/details/22856549
0 0
- unity图片内存优化 涉及到代码进行缩放
- unity图片内存优化
- unity图片内存优化
- Android Bitmap图片缩放优化,用canvas替代Matrix进行缩放,解决一些错我
- 【Unity优化】内存优化
- [Unity 优化]内存优化
- unity 粒子缩放代码实现
- 图片缩放代码
- J2ME图片缩放代码
- Java图片缩放代码
- 缩放图片代码
- unity优化《二》--Texture图片空间和内存占用分析
- Android内存优化四:从代码角度进行优化
- android内存优化3—从代码角度进行优化
- C# 对图片进行缩放
- android对图片进行缩放
- 使用Thumbnails进行图片缩放
- 图片进行缩放裁剪等等
- SQLserver2008-数据查询
- Android页面布局(帧布局)
- ffmepg移植到android实现RTSP客户端-问题小记
- 代码的分支管理策略
- node.js module初步理解
- unity图片内存优化 涉及到代码进行缩放
- http/1.1 400:no host matches with hostname
- COAP介绍
- 动态内存
- Android 导入 library 工程库
- 消息传递(Messaging)
- AndroidManifest.xml 之 meta-data
- 数组循环移位
- poj1062 昂贵的聘礼(最短路变形)