Unity 瑣碎5 利用反射設定編輯器引數

2021-09-07 12:36:12 字數 1690 閱讀 8587

問題

最近處理unity資源打包問題時候經常遇到的乙個問題就是平台切換和bundle編譯。一般情況下,平台轉換我需要依賴cache serbver加快轉換速度,但是在build bundle的時候我又不想開啟cache server,因為會非常非常慢(bundle檔案超過2000個)。每次都記得這個操作不現實,所以就考慮是否可以在平時開啟cache server,build bundle時關閉。

unity 自身editor沒提供這個方面的api參考錢康來c#反射——掀起unity editor面紗一問的思路,只要是編輯器下可以操作的按鈕或者介面應該都可以通過反射進行額外的設定(前提手裡有原始碼哈)。cacheserverpreferences類是unityeditor內部類,主要處理選單editor-->preferences中 cache server 介面的資料處理,so,折騰了一會發射就會有下面的**:

參考**

private static void setcacheserver(bool enable, string ipaddr = "10.8.21.74")

//2 unityeditor 內部類

type cacheservertype = asm.gettype("unityeditor.cacheserverpreferences");

//3 建立例項

object cacheserverpreferencesobj = system.activator.createinstance(cacheservertype);

//4 通過反射讀取已設定的引數

methodinfo readpreferencesmethod = cacheservertype.getmethod("readpreferences");

readpreferencesmethod.invoke(cacheserverpreferencesobj, null);

//5 通過反射設定cacheserver 引數

fieldinfo cacheservermode = cacheservertype.getfield("s_cacheservermode", bindingflags.nonpublic | bindingflags.static);

fieldinfo cacheserveripaddress = cacheservertype.getfield("s_cacheserveripaddress", bindingflags.nonpublic | bindingflags.static);

cacheservermode.setvalue(cacheserverpreferencesobj, enable? 1:2);

cacheserveripaddress.setvalue(cacheserverpreferencesobj, ipaddr);

//6 通過反射 儲存 cacheserver 引數

methodinfo writepreferencesmethod = cacheservertype.getmethod("writepreferences");

writepreferencesmethod.invoke(cacheserverpreferencesobj, null);

}

參考

在命名空間中通過反射,獲取所有型別

c#反射assembly 詳細說明

assembly 類

c#反射——掀起unity editor面紗

Unity 利用反射排查資源中的預設材質

接到需求,給資源檢測工具增加乙個功能,排查預設材質。unity裡面直接建立的模型,很容易附帶上預設材質,這些材質在遊戲執行的時候shader建立非常耗,所以要排除掉。1.1 物件是material,檢查shader名字是否為 default material 1.2 物件是renderer,則取它的...

Unity 利用Render Texture 快照

一.首先我們得拿到渲染紋理 我們在project面板creat乙個rendertexture,然後把這個渲染紋理給相機的rendertexture,如下圖所示 然後如下面 往面料滑動列表刷資料 private void upadteclothdata item.transform.setparent...

Unity 瑣碎 2 Shader 顏色除錯

shader的除錯有點蛋疼,最近在測試image effect中深度還原時,不知道輸出的結論是否正確,後面就採取了這種策略。在物體上世界座標位轉換區間到 0,1 然後作為顏色進行輸出。然後image effect shader中也採用類似的方式進行輸出,通過顏色進行比較。需要注意的是 顏色區間,比如...