一、完全透明的背景,并不代表它不存在,每个像素点都需要渲染,会产生overdrall,如果全屏的UI比较多,增加的overdrall也很多
using UnityEngine.UI;
public class RaycastTest : Image
{
/// <summary>
/// 方法的作用是生成当前的mesh,方法内部在计算顶点信息,通过顶点信息生成三角面
/// </summary>
/// 点击响应是跟框有关系,跟里面的mesh没有关系,射线相应的范围实际是rect框
/// 控制显示的部分是通过mesh,ui上真正造成消耗的mesh的rebuild
/// 保留rect不生成mesh
/// <param name="toFill"></param>
protected override void OnPopulateMesh(VertexHelper toFill)
{
toFill.Clear();
}
}
二、图片精灵的两个属;
第一个属性设置或者获取像素信息的时候用到,需要对文件写权限,会在文件中创建副本,内存从一份变成两份;
第二个熟悉是远近景图像清晰度不一样;用在3D中,UI中是没用的,如果UI中图片模糊,可以看看是否勾选了此选项;
三、自动设置图片导入格式
using UnityEditor;
using UnityEngine;
/// <summary>
/// 图片导入格式的设置:继承自资源导入流程类
/// </summary>
public class TextureSetting : AssetPostprocessor
{
void OnPreprocessTexture()
{
Debug.Log("OnPreprocessTexture");
TextureImporter importer = (TextureImporter) assetImporter;
importer.textureType = TextureImporterType.Sprite;
}
}