InjectFix 04 官方案例

2021-10-24 19:19:41 字數 1271 閱讀 1879

以配套的helloworld為例,編輯器下演示ifix的使用

helloworld位於ifix目錄下

其中calc.cs就是待修復的**,helloworld.cs是calc.cs的測試。

執行一下helloworld的場景,看下控制台的列印,可以看到calc.cs是錯誤的。

和xlua類似,你得配置下要預處理的**,預處理過的**才可能在執行時切換到補丁**。

[

configure

]public

class

helloworldcfg;}

}}

說明下:

1、這配置必須放在editor目錄下(例子的配置位於helloworld/editor目錄下);

2、寫配置的類需要打上configure標籤,屬性必須打ifix標籤並且宣告為static

3、屬性返回乙個ienumerable即可,由於helloworld只需要簡單的返回個list,因為這是個getter,你可以用linq+反射很方便的把大量的類給配上,例如你要一次加入***命名空間下所有類,可以這樣:

[

configure

]public

class

helloworldcfg

}}

有兩個步驟:inject,fix。

實際應用中,inject只需在發包時做一次,這個步驟主要是對**做一定的預處理,只有做了預處理的**後續才能正常載入補丁。

fix的過程是根據修改後的**編譯後的dll,生成補丁。

修改**和fix之間別執行inject,否則ifix會認為這是個線上版本,拒絕生成補丁。鑑於這個限制,我們編輯器**驗流程上做一定的調整:先修改**為正確邏輯,生成patch。然後回退**,執行inject模擬線上有問題的版本。

開啟calc.cs,修改為正確的邏輯,為將要生成patch的函式打上patch標籤(為了做對比,案例只為add函式打patch標籤)

執行"injectfix/fix"選單

看到process success列印表示已經處理成功。我們可以在專案根目錄下找到assembly-csharp.patch.bytes檔案,這就是補丁檔案。

回滾對add為錯誤邏輯,執行"injectfix/inject"選單(只有注入過的版本才能載入補丁)。然後執行,可以看到add此時為錯誤邏輯,然後把assembly-csharp.patch.bytes拷貝到\assets\ifix\resources下,重新執行,可以看到已經修復到新邏輯。

oozie官方案例

首先安裝配置完oozie oozied.sh start在後台執行 步驟 1 在oozie的根目錄下找到oozie examples.tar.gzoozie examples.tar.gz 2 解壓 hadoop hadoop002 oozie 4.0.0 cdh5.3.6 tar zxvf ooz...

SteamVR官方案例實踐

本文環境 unity2018.4.1f1 steamvr2.5.0 wmr頭盔 wmr控制器 最佳實踐對於程式中的特定任務,我們應該建立特定的動作集,然後在動作集中新增相關動作。使用者在繫結介面中分別給每個動作集的動作繫結按鍵,我們在程式中管理動作集的開啟和關閉,這樣能避免使用者乙個按鍵繫結了多個動...

Unity官方案例學習 SpaceShooter

我們把戰機的model拖入到hierarchy中,命名為player,放在 0,0,0 位置,方便我們之後的計算。戰機機身後噴的火焰是專案自帶的動畫,放到player下。shotspawn是乙個empty object,可以想象成戰機的彈藥發射器,也就是說我們的子彈是從這裡發射出去的。為戰機設定剛體...