開始前準備
- unity、vs
- hybridclr
- hybridclr_trial
- hybridclr_unity
- YooAsset
配置 HybridCLR
1. 新建一個unity項目。
2. 安裝 hybridclr_unity
- 點擊菜單 Windows/Package Manager 彈出窗口
- 點擊左上角的加號,選擇
Add package from git url...
https://gitee.com/focus-creative-games/hybridclr_unity
- 輸入上方url,點
Add
或者按回車
鍵,等待加載完成。
因為網(wǎng)絡問題無法加載的
用將 hybridclr_unity 庫clone或者下載到本地,選擇Add package from disk...
,找到庫中的 package.json,選中打開即可。
3. 配置 PlayerSettings
- 關閉增量式GC(
Use Incremental GC
) 選項。因為目前不支持增量式GC。WebGL平臺忽略此選項。 -
Scripting Backend
切換為il2cpp
。WebGL平臺不用設置此選項。 -
Api Compatability Level
切換為.Net 4
或.Net Framework
(打主包時可以使用.net standard
,但使用腳本Compile熱更新dll時必須切換到.Net 4
或.Net Framework
)。如果你一定要熱更新部分也使用.net standard
也可以,官方說是找他們商業(yè)化服務。
注意:不管構建那個平臺,都要設置。
4. 安裝 HybridCLR
- 點擊菜單HybridCLR/Installer…,彈出安裝界面。點擊
安裝
,等待安裝完成。
5. 導入2個工具庫
- 下載官方示例 hybridclr_trial
- 將 Packages 中 com.gwiazdorrr.betterstreamingassets 和 Unity-Logs-Viewer文件夾,復制到新項目的 Packages中。
com.gwiazdorrr.betterstreamingassets:加載插件
Unity-Logs-Viewer:日志插件
- 將 Assets 下的 Editor、HotUpdate、Images、Main、Prefabs、Scenes文件夾和 link.xml 文件,復制到新項目的 Assets 中。
- 等待編譯完成。
這里可以對項目整理一下。
刪除多余的場景:SampleScene
刪除多余的節(jié)點:GameObject、ScreenLog
刪除Reporter節(jié)點,重新創(chuàng)建一個,防止后邊報錯。
6. 創(chuàng)建 Hotfix.dll
- 選中 HotUpdate 文件夾,右鍵,選擇Creator/Assembly Definition,創(chuàng)建 Hotfix.dll 文件。
- 選中 Hotfix.dll 文件,在
Inspector
面板上勾選Allow 'unsafe' Code
選項。 - 在
Use GUIDs
下添加Main
、HybridCLR.Runtime
、BetterStreamingAssets
引用,然后點Apply
保存。
7. 配置 HybridCLR
- 點擊菜單HybridCLR/Settings,彈出設置界面。
- 找到
熱更新Assembly Definitions(Hot Update Assembly Definitions)
,將 Hotfix.dll 文件添加進去。 - 找到
補充元數(shù)據(jù)AOT dlls(Patch AOT Assemblies)
,將mscorlib
、System
、System.Core
名字添加進去。
8. 安裝 YooAsset
- 打開管理界面 Edit/Project Settings/Package Manager,輸入以下內(nèi)容,點
Save
保存。
Name: package.openupm.cn
URL: https://package.openupm.cn
Scope(s): com.tuyoogame.yooasset
-
打開管理界面 Windows/Package Manager,點擊加號右邊的按鈕,選擇 My Registries 下的 YooAsset,點擊
Install
,等待安裝完成。 -
分別在 Hotfix.dll、Main.dll 文件中添加 YooAsset 的引用。
YooAsset:這是一個資源打包管理的插件,詳細使用出門右轉(傳送門)。
9. 修改 LoadDll.cs
- 修改后的 LoadDll.cs(傳送門)
- 復制全部代碼到項目中的 LoadDll.cs。注意:項目中 LoadDll.cs 代碼全被覆蓋,不要了。
- 打開 LoadDll.cs 腳本,將
DefaultHostServer
、FallbackHostServer
的值修改為資源服務器上AB包的地址。 - 打開 Main 場景,選擇 LoadDll 節(jié)點,在
Inspector
面板上修改Play Mode
為Host Play Mode
Play Mode:資源運行模式
EditorSimulateMode:編輯器模式
OfflinePlayMode:離線模式
HostPlayMode:在線模式
10. 配置 YooAsset
YooAsset 的使用不多講,這里只是簡單使用。配置前,先在 Assets 下新建文件夾 DllBytes。
- 點擊菜單 YooAsset/AssetBundle Collector,打開 資源包收集工具 彈窗。
- 勾選前三個選項
- 添加 Packages
- 添加 Groups
Group Name:ABGroup
Group Desc:AB包資源
點[+]
,將 Prefabs 文件夾拖進去 - 添加 Groups
Group Name:DllGroup
Group Desc:Dll文件
點[+]
,將 DllBytes 文件夾拖進去,改第三個選為打包原生文件
- 點右上角
Save
保存
11. Generate/All 和 Build
- 點擊菜單 HybridCLR/Generate/All,等待編譯生成。
- 在 BuildAssetsCommand.cs 腳本 20行,加代碼
public static string DllBytesOutputDir => Application.dataPath + "/DllBytes";
- 在 BuildAssetsCommand.cs 腳本 72行,改代碼
[MenuItem("HybridCLR/Build/BuildAssetsAndCopyToStreamingAssets")]
// 改為
[MenuItem("HybridCLR/Build/BuildDllsAndCopyDllBytesToOutputDir")]
- 在 BuildAssetsCommand.cs 腳本 76行,注釋代碼
//BuildAssetBundleByTarget(target); //因為使用了YooAsset,所以Build AssetBundle不需要在這里進行。
- 在 BuildAssetsCommand.cs 腳本 83行,注釋代碼
//CopyAssetBundlesToStreamingAssets(target); //前邊沒了Build,這里就沒有要復制的對象了。
- 在 BuildAssetsCommand.cs 腳本 99行,改代碼
string aotAssembliesDstDir = Application.streamingAssetsPath;
// 改為
string aotAssembliesDstDir = DllBytesOutputDir;
- 在 BuildAssetsCommand.cs 腳本 120行,改代碼
string hotfixAssembliesDstDir = Application.streamingAssetsPath;
// 改為
string hotfixAssembliesDstDir = DllBytesOutputDir;
- 在 BuildPlayerCommand.cs 腳本 24行,注釋代碼
//[MenuItem("HybridCLR/Build/Win64")] //經(jīng)上面改動這里可能存在問題。
- 在 HotUpdateMain.cs 腳本 16行,注釋代碼
//gameObject.AddComponent<CreateByCode>(); //等下做熱更新測試會取消注釋。
- 點擊菜單 HybridCLR/Build/BuildDllsAndCopyDllBytesToOutputDir,等待編譯生成。
- 點擊菜單 YooAsset/AssetBundle Builder,打開 資源包構建工具 彈窗。
Build Mode:第一次 或 必要時,選Force Rebuild
,其他時候選Incremental Build
,設置版本號,點Save
、構建
,完成時會彈出打包輸出文件夾。
Force Rebuild —— 強制重新構建
Incremental Build —— 增量構建
Dry Run Build —— 演練構建
Simulate Build —— 模擬構建
12. 驗證是否成功
- 將打包出來的文件放到資源服務器上,直接運行unity,在Console中會有下載相關日志。
- 打PC包出來,運行,使用鼠標在屏幕上畫圈查看日志,也會有下載相關日志。
以上兩種方式運行后,會看到最后一條日志有以下字樣:
=======看到此條日志代表你成功運行了示例項目的熱更新代碼=======
- 在 HotUpdatePrefab 預制件上,隨便做出點修改,例如:創(chuàng)建
Image
、Text
等 - 在 HotUpdateMain.cs 腳本 16行,取消注釋代碼
- 在 HotUpdateMain.cs 腳本 Start 函數(shù)最后一行,加上自定義的日志(隨便啥都行,只要不報錯)。
這些操作是來模擬平時開發(fā)做出的修改。文章來源:http://www.zghlxwxcb.cn/news/detail-497590.html
- 點擊菜單 HybridCLR/Build/BuildDllsAndCopyDllBytesToOutputDir,等待編譯生成。
- 點擊菜單 YooAsset/AssetBundle Builder,打開 資源包構建工具 彈窗,Build Mode選擇
Incremental Build
,設置版本號,點擊構建
。 - 將新打包出來的文件放到資源服務器上,運行PC包測試,在日志上你會看到 CreateByCode.cs 中的輸出日志、你自定義的輸出日志,還有你對 HotUpdatePrefab 預制件的修改。
- 此時,以上操作沒有問題,就說明 HybridCLR 熱更新 配置好了。
結束
以上就是配置 HybridCLR 熱更新 的記錄
如有侵權,聯(lián)系刪除
如有錯誤、不當之處,敬請指導
如在構建AssetBundle和dll文件時有更好的方式,可以聯(lián)系,一起探討學習文章來源地址http://www.zghlxwxcb.cn/news/detail-497590.html
到了這里,關于HybridCLR 熱更新配置的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!