[Unity]利用全局回調(diào)事件修改默認組件


起因是這樣的,在更換了渲染管線之后,創(chuàng)建出來的SpriteRenderer的默認材質(zhì)就和以前不一樣了,在用ShaderGraph做了新的材質(zhì)之后我發(fā)現(xiàn)個問題,那就是我要么新建一個就拖一次材質(zhì),要么一次性做一堆然后批量修改,再要么就自個兒在Menu菜單里面加一項,我這人比較懶,就想能不能在創(chuàng)建的時候就直接修改了,剛好今天參加了Unity成都站的技術交流日,線上咨詢之后得到結(jié)果,可以使用?ObjectFactory.componentWasAdded 這個回調(diào)來實現(xiàn)我的需求.
從名字來看,componentWasAdded 簡單翻譯就是當一個組件被添加的時候,也就是說這個回調(diào)會在添加組件的時候觸發(fā),經(jīng)過我的測試無論是在Hierarchy窗口創(chuàng)建帶組件的物體還是給已有物體添加組件都會觸發(fā)該回調(diào).
接下來就是怎么用階段.

首先我們需要新建一個類,然后引入?UnityEditor 這個名字空間,隨便寫一個函數(shù),為其添加[InitializeOnLoadMethod]標簽,這個標簽的作用就是在編輯器初始化的時候執(zhí)行修飾的函數(shù),(對應類也有相應的標簽)
這個函數(shù)只需要一個功能,那就是給componentWasAdded?添加回調(diào),具體如圖:

(由于我比較懶所以用的閉包和Resources加載
接下來創(chuàng)建一個新的物體

可以看到對應組件的材質(zhì)已經(jīng)被修改為指定的材質(zhì)啦~

除了修改默認值,這個回調(diào)還可以實現(xiàn)一些別的有趣的功能,大家不妨試試看.
假裝課后作業(yè):
? ? 利用本文介紹的辦法,實現(xiàn)將新創(chuàng)建的Button類修改為自定義Button類