通過反射修改Unity PSDImporter,使其便于自動生成幀動畫資源(兼容2022.1/2)
2022-06-28 13:46 作者:DarkDreamStudio | 我要投稿
知乎也是我:?https://zhuanlan.zhihu.com/p/534843630
頭疼了小一個月,終于弄出來了,弄完只想罵Unity傻叉,寫的什么綠皮代碼換了好幾套姿勢才反射到所有有效數(shù)據(jù)
最早是想看看有什么辦法讓原生的PSDImporter支持自動把圖層當幀動畫的幀來導入,這樣可以在ps里直接按約定的幀率做成gif調(diào)到滿意位置直接合并子圖層丟進unity(或者其他幀動畫軟件輸出gif導入ps存psd),工作流異常爽快。
然后搜了半天外網(wǎng)居然沒人有方案,倒是在萬能的知乎找到了一個唯一解:
https://zhuanlan.zhihu.com/p/158990037?utm_source=qq&ivk_sa=1024320u
但這位大佬的方案是把整個包拉出來魔改,核心修改其實不多,但要帶著一大坨其實并沒改過的代碼,就想著能不能反射搞定,畢竟核心需求其實只是一個根據(jù)PSD內(nèi)的位置設定Sprite的pivot使其自動對齊
然后分析了一下這位大佬的方案,感覺有點小問題:
1、需要額外分析PSD的參考線數(shù)據(jù),不方便反射獲得(沒有中間數(shù)據(jù),要自己從頭反射更大堆保護區(qū)里的數(shù)據(jù)和方法來從頭搞)
2、只允許兩條參考線作為pivot定位其實限制ps使用方式了,也很蛋疼
我就想到可以假定第一個圖層就是用來定位的,取其中心點位置作為pivot即可,最后生成的時候不帶他就完了(此處是個大坑,但還好找到路了2333)。
代碼在此,只需兩個文件。BSD協(xié)議,隨便用,只需要附帶出處:
https://github.com/realamex/PSDImporterForFrames
標簽: