Unity热更新HybridCLR+Addressables

编辑器打包到Addressables

using HybridCLR.Editor;
using HybridCLR.Editor.Commands;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using UnityEditor;
using UnityEditor.AddressableAssets.Settings.GroupSchemas;
using UnityEditor.AddressableAssets.Settings;
using UnityEditor.AddressableAssets;
using UnityEngine;

public static class HotUpdateHelper
{
   
    [MenuItem("HybridCLR/编译热更DLL,并且拷贝到Addressable")]
    public static void Copy2Addressable()
    {
   
        CompileDllCommand.CompileDllActiveBuildTarget();//官方提供脚本

        CopyAOTAssembliesToCache();
        CopyHotUpdateAssembliesToCache();

        //刷新资源
        AssetDatabase.Refresh();
    }


    public static void CopyAOTAssembliesToCache()
    {
   
        var target = EditorUserBuildSettings.activeBuildTarget;
        string aotAssembliesSrcDir = SettingsUtil.GetAssembliesPostIl2CppStripDir(target);
        string aotAssembliesDstDir = Application.dataPath + $"/HybridCLRBuildCache/AssetBundleOutput/StandaloneWindows64";

        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($"[CopyAOTAssembliesToStreamingAssets] copy AOT dll {
     srcDllPath} -> {
     dllBytesPath}");

            AddAssetToGroup(
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呼呼突突

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值