//多图导入Importer的设置 参数列表含义 //path 路径,rects uv坐标和大小 public static void CreateMultipleSpriteImporter(string path, Rect[] rects, string[] spriteNames, Vector4[] borders, int width, int height, int maxSize, TextureImporterFormat format) { TextureImporter importer = AssetImporter.GetAtPath(path) as TextureImporter; //贴图导入器 if (importer == null) { Debug.LogError("发现不是图片的资源, 资源路径 = " + path); return; } //资源不属于图片资源,无法获取资源上的贴图导入器 importer.textureType = TextureImporterType.Sprite; //按照Sprite(2D and UI)的模式导入 importer.spriteImportMode = SpriteImportMode.Multiple; //导入的类型为多图导入 importer.spritePixelsPerUnit = 1; //图片中多少个像素对应Unity项目中的1个unit SpriteMetaData[] metaDatas = new SpriteMetaData[spriteNames.Length]; //用于生成Sprite的编辑器数据 for (int i = 0; i < metaDatas.Length; i++) { SpriteMetaData metaData = new SpriteMetaData(); metaData.name = spriteNames[i]; Rect rect = rects[i]; //布局的计算 布局计算公式及图解见下图 if (rects.Length > 1) { //根据sprite在图集中的rect来计算像素单位的矩形 metaData.rect = new Rect( rect.xMin * width + TextureClamper.BORDER, //左边的百分比 * 图集宽度 + 边界 rect.yMin * height + TextureClamper.BORDER, //下边的百分比 * 图集高度 + 边界 rect.width * width - TextureClamper.BORDER * 2, //sprite所占整张图集的宽度百分比 * 图集宽度 - 边界 * 2 rect.height * height - TextureClamper.BORDER * 2 //sprite所占整张图集的高度百分比 * 图集高度 - 边界 * 2 ); } else { metaData.rect = new Rect(rect.xMin * width, rect.yMin * height, rect.width * width, rect.height * height); } //sprite的边缘边框大小(以像素为单位) if (borders != null) { metaData.border = borders[i]; } metaData.pivot = new Vector2(0.5f, 0.5f); metaDatas[i] = metaData; } importer.spritesheet = metaDatas; //用于表示与各sprite图形对应的图集部分的数组。 importer.maxTextureSize = maxSize; //sprite的尺寸 importer.isReadable = false; //关闭可读 importer.mipmapEnabled = false; //mipMapEnable关闭 importer.crunchedCompression = true; //使用经过 Crunch 处理的压缩(如果可用) importer.spritePackingTag = ""; importer.SetPlatformTextureSettings(TextureImporterUtil.CreateImporterSetting(GetTextureBuildTargetName(), 2048, format, 100, false)); }
//导入贴图,并返回一个AssetsImport对象 public static void CreateReadableTextureImporter(string path) { TextureImporter importer = AssetImporter.GetAtPath(path) as TextureImporter; if (importer == null) { Debug.LogError("发现不是图片的资源, 资源路径 = " + path); return; } importer.textureType = TextureImporterType.Sprite; importer.npotScale = TextureImporterNPOTScale.None; importer.isReadable = true; importer.mipmapEnabled = false; //为import对象进行导入参数的设置 importer.SetPlatformTextureSettings(TextureImporterUtil.CreateImporterSetting(GetTextureBuildTargetName(), 2048, TextureImporterFormat.RGBA32)); }