日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Unity 如何实现批量修改图片格式

發布時間:2023/12/14 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Unity 如何实现批量修改图片格式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

unity開發游戲過程中,經常會批量修改部分圖片格式,比如ios端,我們會修改為astc6x6,android端我們會修改為ETC2。又或者我們需要把圖片打包圖集,需要批量設置SpriteTag。但是當我們導入大量圖片時,如果一個文件夾一個文件夾的修改,再加上android和ios不同平臺的修改,這就需要大量的操作,而且最要命的時修改完后,如果團隊里有人再添加新的圖片,上線打包時,還需要重新整理標記圖片格式。

那么就需要我們寫一個小工具來自動處理這個過程。常用的有兩種方式

第一種方式:

使用unity自帶的AssetPostprocessor的生命周期,這種方式是在圖片導入時或者導入前,介入編輯器的導入回調方法,然后自動設置所有導入圖片的格式屬性等,這種方法在每次導入都會自動調用,很方便,但是缺點就是,強制性,后續無法手動再調整圖片格式了,所以就不太靈活了,因為我們不能保證所有圖片都是用一種尺寸和格式。

基本結構如下:

using System.Collections; using UnityEditor; public class MyEditor : AssetPostprocessor {//模型導入之前調用public void OnPreprocessModel(){Debug.Log ("OnPreprocessModel="+this.assetPath);}//模型導入之前調用public void OnPostprocessModel(GameObject go){Debug.Log ("OnPostprocessModel="+go.name);}//紋理導入之前調用,針對入到的紋理進行設置public void OnPreprocessTexture(){Debug.Log ("OnPreProcessTexture="+this.assetPath);TextureImporter impor = this.assetImporter as TextureImporter;impor.textureFormat = TextureImporterFormat.ARGB32;impor.maxTextureSize = 512;impor.textureType = TextureImporterType.Advanced;impor.mipmapEnabled = false;}//聲音文件導入前調用public void OnPreprocessAudio(){AudioImporter audio = this.assetImporter as AudioImporter;audio.format = AudioImporterFormat.Compressed;}//所有的資源的導入,刪除,移動,都會調用此方法,注意,這個方法是static的public static void OnPostprocessAllAssets(string[]importedAsset,string[] deletedAssets,string[] movedAssets,string[]movedFromAssetPaths){Debug.Log ("OnPostprocessAllAssets");foreach (string str in importedAsset) {Debug.Log("importedAsset = "+str);}foreach (string str in deletedAssets) {Debug.Log("deletedAssets = "+str);}foreach (string str in movedAssets) {Debug.Log("movedAssets = "+str);}foreach (string str in movedFromAssetPaths) {Debug.Log("movedFromAssetPaths = "+str);}} }

這種方式雖然不靈活,但是我們也可以針對我們自己的項目進行深度定制,比如我們可以對不同文件夾和不同文件名進行不同格式設置。但是代碼量會比較多,如果有興趣可以訪問:https://zhuanlan.zhihu.com/p/88568714

第二種方式

使用自定義編輯器按鈕,比如:選中圖片文件夾時,對選中的文件夾下所有圖片進行處理,比較靈活,速度也快。我們可以設置完畢后,再手動微調下特殊的圖片格式。

using System; using System.IO; using UnityEngine; using UnityEditor;/// <summary> /// 資源文件導入自動設置程序 /// </summary> public class AssetProcessor : AssetPostprocessor {[MenuItem("Assets/Custom Reimport Images")]public static void SetAllTextureType(){//獲取鼠標點擊圖片目錄var arr = Selection.GetFiltered(typeof(DefaultAsset), SelectionMode.Assets);string folder = AssetDatabase.GetAssetPath(arr[0]);Debug.Log("Reimport Path:" + folder);//針對目錄下的所有文件進行遍歷 取出.png和.jpg文件進行處理 可自行拓展DirectoryInfo direction = new DirectoryInfo(folder);FileInfo[] pngFiles = direction.GetFiles("*.png", SearchOption.AllDirectories);FileInfo[] jpgfiles = direction.GetFiles("*.jpg", SearchOption.AllDirectories);try{SetTexture(pngFiles);SetTexture(jpgfiles);}catch (Exception e){Debug.LogError(e);}finally{EditorUtility.ClearProgressBar();AssetDatabase.Refresh();}}static void SetTexture(FileInfo[] fileInfo){for (int i = 0; i < fileInfo.Length; i++){//這里第一次寫時有一個接口可直接調用,但是第二次寫時找不到了 所以用了切割字符string fullpath = fileInfo[i].FullName.Replace("\\","/");string path = fullpath.Replace(Application.dataPath, "Assets");TextureImporter textureImporter = AssetImporter.GetAtPath(path) as TextureImporter;EditorUtility.DisplayProgressBar("批量處理圖片",fileInfo[i].Name,i/(float)fileInfo.Length);SetTextureFormat(textureImporter);}}//設置圖片格式static void SetTextureFormat(TextureImporter textureImporter){//根據路徑獲得文件夾目錄,設置圖集的packagingTagstring AtlasName = new DirectoryInfo(Path.GetDirectoryName(textureImporter.assetPath)).Name;textureImporter.mipmapEnabled = false;textureImporter.isReadable = false;textureImporter.textureType = TextureImporterType.Sprite;textureImporter.spritePackingTag = AtlasName;textureImporter.wrapMode = TextureWrapMode.Clamp;textureImporter.npotScale = TextureImporterNPOTScale.None;textureImporter.textureFormat = TextureImporterFormat.Automatic;textureImporter.textureCompression = TextureImporterCompression.Compressed;//Android端單獨設置TextureImporterPlatformSettings setting_android = new TextureImporterPlatformSettings();setting_android.overridden = true;setting_android.name = "Android";//根據是否有透明度,選擇RGBA還是RGBif (textureImporter.DoesSourceTextureHaveAlpha())setting_android.format = TextureImporterFormat.ETC2_RGBA8;elsesetting_android.format = TextureImporterFormat.ETC2_RGB4;textureImporter.SetPlatformTextureSettings(setting_android);//IOS端單獨設置TextureImporterPlatformSettings setting_iphone = new TextureImporterPlatformSettings();setting_iphone.overridden = true;setting_iphone.name = "iOS";//根據是否有透明度,選擇RGBA還是RGBif (textureImporter.DoesSourceTextureHaveAlpha())setting_android.format = TextureImporterFormat.ASTC_RGBA_6x6;elsesetting_android.format = TextureImporterFormat.ASTC_RGB_6x6;textureImporter.SetPlatformTextureSettings(setting_iphone);} }

期望這篇文章對你有所幫助。

總結

以上是生活随笔為你收集整理的Unity 如何实现批量修改图片格式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 毛片日韩 | 污污小说在线观看 | 亚洲av成人片色在线观看高潮 | 日韩中文字幕综合 | 日韩高清在线观看 | 精品久久久久久久久久久久久久久久久久 | 毛片av在线观看 | 小视频在线免费观看 | 久久潮 | 国产精品影音先锋 | 午夜性色 | 久久久久人妻一区二区三区 | 蜜桃av免费在线观看 | 91色在线视频 | 樱花电影最新免费观看国语版 | 无码精品一区二区三区AV | 天天干天天操心 | 国产区一区二区三 | 人妻中文字幕一区二区三区 | 国产精品地址 | www亚洲天堂 | 国产精品久久久久久久久久 | 九九综合九九综合 | 国产精品午夜影院 | 波多野吉衣一区二区三区 | 永久av免费在线观看 | a级黄色网 | 综合精品在线 | 国产视频一区二区三区在线 | 亚洲暴爽 | 国产精品19乱码一区二区三区 | www.成人精品 | 国产一级片视频 | 国产午夜无码视频在线观看 | 男人和女人日批视频 | 日韩欧美精品中文字幕 | 青青草手机视频在线观看 | 性一交一乱一区二区洋洋av | 色无极亚洲影院 | 精品一区免费 | 爆乳2把你榨干哦ova在线观看 | 一区二区国产电影 | 成av在线 | 日日精品| 韩国av在线免费观看 | 亚洲一区二区三区四区av | 97香蕉久久超级碰碰高清版 | 在线观看你懂得 | 黄色岛国片| 伊人福利在线 | 一区二区天堂 | 久久久久久免费毛片精品 | 九色视频91 | 男女无遮挡猛进猛出 | 国产精品黄色av | 久久久精品免费看 | 国产精品毛片一区二区在线看舒淇 | 一区二区三区视频免费看 | 91一区二区三区 | 久久九九精品视频 | 男人av资源网| 在线成人一区 | 四虎影视精品 | av在线不卡观看 | 小sao货水好多真紧h无码视频 | 51精品| 国产精品高清无码在线观看 | 国产理论精品 | 99国产精品99久久久久久 | 哺乳喂奶一二三区乳 | 日本在线视频免费观看 | 精品国产a线一区二区三区东京热 | 日韩成人动漫在线观看 | 国产尤物| av在线免费播放网址 | 少妇中出视频 | 国产成人无码一区二区三区在线 | 制服.丝袜.亚洲.中文.综合懂 | 国产三区四区视频 | 全黄一级裸片视频 | 中国精品毛片 | av观看在线免费 | 顶级嫩模啪啪呻吟不断好爽 | 国产www免费 | 国产一级做a爱片久久毛片a | 欧美视频在线看 | av无码久久久久久不卡网站 | 日p免费视频 | 欧美精品在线观看一区二区 | 超碰最新上传 | 亚洲乱亚洲| 亚洲一区二区三区午夜 | 欧美怡红院 | 秋霞影院午夜老牛影院 | 99精品影视 | 24小时日本在线www免费的 | 国产天堂在线观看 | 国产无码日韩精品 | 大陆熟妇丰满多毛xxxⅹ |