写这篇Unity底层Graphics绘制接口的文章是因为前几天有个朋友问我的一个问题。它的意思是如何在屏幕中绘制贴图的一部分,也就是如何将材质裁剪。
1.使用GUI的话效率不太高,每个部分都需要重新裁剪。
2.使用Mesh网面效率是高了,但是需要每一部分网面增加MeshRenderer组件,效率还是会打折扣。
今天我突然想到了Graphics,按照官方文档的说明它是底层绘制接口,所有GUI和网格的绘制底层都是它,我相信它的运行效率应该是最高的。
OK.我们来学习它。绘制贴图的访法是Graphics.DrawTexture() ,它也是在OnGUI中使用,但是它需要接收到Repaint事件的时候才能绘制。如下图所示,我将一张完整的贴图拆成了4部分。
来看看代码是怎么写的。
publicTexture tex;
voidOnGUI ()
{
if( Event.current.type.Equals(EventType.Repaint) )
{
Graphics.DrawTexture( newRect(200, 100, 128, 128),tex,newRect(0.0f, 0.5f, 0.5f, 0.5f),0, 0, 0,0,null);
Graphics.DrawTexture( newRect(200,250, 128, 128),tex,newRect(0.0f, 0.0f, 0.5f, 0.5f),0, 0, 0,0,null);
Graphics.DrawTexture( newRect(350, 100, 128, 128),tex,newRect(0.5f, 0.5f, 0.5f, 0.5f