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);
    }
Пример #2
0
 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();
         }
     }
 }
Пример #3
0
        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
                {
                }
            }
        }