HybridCLR+Addressable热更代码和资源

( 本案例使用Unity2021.3.26f1c1 )

一、安装Hybrid

参考 Hybrid快速上手
也可以直接clone 示例项目 https://github.com/focus-creative-games/hybridclr_trial.git
推荐使用第二种,有AOT补充元数据的dll,否则在下面的代码里剔除元数据相关的代码拷贝和热更操作
需要注意设置
在这里插入图片描述
这个链接是我自己改过的,https://gitee.com/pangchenglong/hybridclr.git
(测试时只需要先Hybrid->Generate->All,再AddressableGroups->Build->NewBuild,然后运行)

二、安装Addressable

PackageManager中安装就行

1、Window->Asset Management->Addressables分别设置Settings、Hosting、Profiles、Groups

Settings:
在这里插入图片描述
创建Cache Initialization Settings,Directory设置 {UnityEngine.Application.persistentDataPath},并在Initialization Objects中添加
在这里插入图片描述

Hosting:
在这里插入图片描述

Profiles:
在这里插入图片描述

Groups:
在这里插入图片描述
在这里插入图片描述

三、创建Hybrid打包工具

创建Editor文件夹,创建脚本

public class BuildDllCommand:Editor
{
   
    [MenuItem("HybridCLR/仅拷贝dll到项目里")]
    public static void CopyDll()
    {
   
        BuildTarget target = EditorUserBuildSettings.activeBuildTarget;
        CopyABAOTHotUpdateDlls(target);
        AssetDatabase.Refresh();
    }
    [MenuItem("HybridCLR/打包并拷贝dll到项目里")]
    public static void BuildAndCopyDll()
    {
   
        BuildTarget target = EditorUserBuildSettings.activeBuildTarget;
        CompileDllCommand.CompileDll(target);
        CopyABAOTHotUpdateDlls(target);
        AssetDatabase.Refresh();
    }

    public static void CopyABAOTHotUpdateDlls(BuildTarget target)
    {
   
        CopyAOTAssembliesToAssets();
        CopyHotUpdateAssembliesToAssets();
    }

    private static string AssembliesDstDir {
    get => Application.dataPath + "/HotFix"; }

    public static void CopyAOTAssembliesToAssets()
    {
   
        var target = EditorUserBuildSettings.activeBuildTarget;
        string aotAssembliesSrcDir = SettingsUtil.GetAssembliesPostIl2CppStripDir(target);
        string aotAssembliesDstDir = AssembliesDstDir;

        foreach (var dll in SettingsUtil.AOTAssemblyNames)
        {
   
            string srcDllPath = $"{aotAssembliesSrcDir}/{dll}.dll";
            if (!File.Exists(srcDllPath))
            {
   
                Debug.LogError($"ab中添加AOT补充元数据dll:{srcDllPath} 时发生错误,文件不存在。裁剪后的AOT dll在BuildPlayer时才能生成,因此需要你先构建一次游戏App后再打包。");
                continue;
            }
            string dllBytesPath = $"{aotAssembliesDstDir}/{dll}.dll.bytes";
            File.Copy(srcDllPath, dllBytesPath, true);
            Debug.Log($"[CopyAOTAssembliesToAssets] copy AOT dll {srcDllPath} -> {dllBytesPath}");
        }
    }

    public static void CopyHotUpdateAssembliesToAssets()
    {
   
        var target = EditorUserBuildSettings.activeBuildTarget;

        string hotfixDllSrcDir = SettingsUtil.GetHotUpdateDllsOutputDirByTarget(target);
        string hotfixAssembliesDstDir 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值