public TextureImportSetting() { var ramdomName = AssetImportUtils.GetRandomNameByTimeStamp(); innerTexturePath = $"{ROOT}{ramdomName}.png"; innerTexture = new Texture2D(1, 1); var bytes = innerTexture.EncodeToPNG(); File.WriteAllBytes(innerTexturePath, bytes); AssetDatabase.ImportAsset(innerTexturePath); innerTextureImporter = AssetImporter.GetAtPath(innerTexturePath) as TextureImporter; metaFile = $"{innerTexturePath}.meta"; metaContent = File.ReadAllText(metaFile); innerTextureGuid = AssetDatabase.AssetPathToGUID(innerTexturePath); }
public static void ImportTexture(string srcFolder, string targetFolder, Action <TextureImporter> importerSettingCallback) { if (!string.IsNullOrEmpty(srcFolder)) { var files = Directory.GetFiles(srcFolder) .Where(file => file.EndsWith("png") || file.EndsWith("jpg") || file.EndsWith("exr")); using (var importSetting = new TextureImportSetting()) { var importer = importSetting.GetTextureImporter(); importerSettingCallback?.Invoke(importer); importSetting.ConfirmImportSetting(); AssetImportUtils.StartAssetEditing(); foreach (var file in files) { var fileName = Path.GetFileName(file); var targetPath = $"{targetFolder}/{fileName}"; File.Copy(file, targetPath, true); importSetting.GenerateMetaFile(targetPath); } AssetImportUtils.StopAssetEditing(); AssetDatabase.Refresh(); } } }
public void OnPostprocessTexture(Texture2D texture) { var format = texture.format; bool isExternalLoading = AssetImportUtils.GetUserData <bool>(assetImporter, "externalLoading"); if (Is16Bit(texture) && !isExternalLoading) { try{ using (var originalTextureWWW = new WWW("file://" + Directory.GetCurrentDirectory().Replace(@"\", "/") + "/" + assetPath)) { while (originalTextureWWW.isDone == false) { ; } var originalTexture = originalTextureWWW.texture; var tempPathPrefix = FileUtil.GetUniqueTempPathInProject(); var destTexture = tempPathPrefix + ".Out.png"; var pvrTexture = tempPathPrefix + ".pvr"; bool needsResize = texture.width != originalTexture.width || texture.height != originalTexture.height; string srcTexture = assetPath; var ditheringParam = new PVRTexTool.PVRTexToolParams() { InputFile = srcTexture, PVROutputFile = pvrTexture, OutputFile = tempPathPrefix + ".png", Dither = true, ResizeFilter = PVRTexTool.ResizeFilter.Cubic, EncodeFormat = FormatToPackerFormat[format] }; if (needsResize) { ditheringParam.Width = texture.width; ditheringParam.Height = texture.height; } bool succeeded = PVRTexTool.RunCommand(ditheringParam); if (succeeded) { using (var www = new WWW("file://" + Directory.GetCurrentDirectory().Replace(@"\", "/") + "/" + destTexture)) { while (www.isDone == false) { ; } if (string.IsNullOrEmpty(www.error) == false) { Debug.LogError(www.error); } if (www.texture != null) { var bytes = www.texture.EncodeToPNG(); texture.LoadImage(bytes); EditorUtility.CompressTexture(texture, format, TextureCompressionQuality.Normal); EditorUtility.SetDirty(texture); } } File.Delete(destTexture); File.Delete(pvrTexture); } } } catch { } } }