Unity HybridCLR + Xlua + Addressable 要点记要

这篇具有很好参考价值的文章主要介绍了Unity HybridCLR + Xlua + Addressable 要点记要。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

接入缘由

老工程原本是C#,想做热更,于是接入了Xlua和Addressable。由于工程老,人手也不够,只是新代码使用Xlua,老功能(尤其是核心战斗还是C#)。大半年后觉得并不能达到预期需求。于是通过再接入Hybrid来解决最终问题。

HybridCLR 的接入,以及原理这里就不重复说明了,在官网上有非常详细的教程
Github:https://github.com/focus-creative-games/hybridclr

接入过程中出现的错误,第一时间查看官网的“常见错误”。能解决绝大多数问题

Xlua相关注意事项:

  • Hybrid 不支持 GetCompent(“xxxx”) 的使用方式,需要统一改成GetCompnent(typeof(CS.xxx.xxx))
  • 所有的外部方法(extern) 都不能作为热更代码。
    很多插件,包括XLua,在调用IOS原生代码时,都会使用外部方法。如果这些代码被打包进热更代码,这些外部方法都会被裁减掉。处理其他插件时,只需要把整个插件移入非热更程序集(AOT)中就行了。但是XLua由于Warp文件的特殊原因,不能直接这么做。
    处理方式:
  • 将xLua原生代码拆分成两部分,编辑器脚本放在主工程,其他部分放在Hotfix工程.
  • 修改LuaDLL.cs,原生LuaDLL.cs放在主工程并将namespace修改为其他名称(比如XLuaBase),新的LuaDLL.cs放在Hotfix工程,其中,Hotfix工程里的LuaDLL.cs调用主工程里的函数.
  • 修改xLua相关的模板文件(*.tpl.txt),将using LuaCSFunction = XLua.LuaDLL.lua_CSFunction; 全局替换为 using LuaCSFunction = XLuaBase.lua_CSFunction;
  • 一些方法中不可见的枚举值参数,直接修改为int
HybridCLR + XLua 示例项目

https://gitee.com/ldr123/HybridCLRXlua

Addressable注意事项

  • addressable 不能直接加载以为Dll或者bytes后缀的文件。
    所有通过Hybrid打出热更dll后,需要将其改为txt后缀,再通过Addressables.LoadAssetAsync加载。并且,可以对热更dll进行加密,来增加安全性。
TextAsset hotfixDll = Addressables.LoadAssetAsync<TextAsset>($"ExtensionRes/Extension_{i}").WaitForCompletion();
byte[] encryptBytes = hotfixDll.bytes; // 得到加密的代码数据
byte[] decryptBytes = Security.XXTEA.Decrypt(encryptBytes, PreloadConst.GetDK()); //解密代码
var gameAss = System.Reflection.Assembly.Load(decryptBytes);// 加载到内存中
  • 不能完全依靠addressable 的Check for Content Update功能。
    如果你修改了某个代码文件,并打好了热更资源。然后使用此功能。所有依赖此代码资源文件(prefab、scriptobject)全会被标记已改变。经本人测试,这些资源完全没有更新必要。所以这里可能需要自己创建额外的资源管理工具来辅助检查。

  • 另外两个Addressable设置问题(
    Unity HybridCLR + Xlua + Addressable 要点记要

  • Unique Bundle IDs 如果打勾。可能会造成丢失一些资源的引用。

  • MonoScript Bundle Naming Prefix 使用Defuat Group GUID打包。然后会生成有一个monoscript.Bundle在默认组里面。如果更新时增加新的Mono脚本,务必将monoscript.Bundle 一起更新。否则挂载新的脚本的Prefab会丢失此脚本。

暂时就这些了。发现新问题会补充。也欢迎交流哈文章来源地址https://www.toymoban.com/news/detail-494693.html

到了这里,关于Unity HybridCLR + Xlua + Addressable 要点记要的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity 接入HybridCLR的点点滴滴,亲测三平台(PC、Android、WebGL)妥妥的。-问题分享

             一入热更深似海啊,没有热更是真恼火啊,干啥啥不方便,动不动就得重新发包;说实在的,也是工作之余研究这个,在原有框架基础上接入这个热更,既要保持原有功能,还要支持热更,实实在在、断断续续搞了这么久,终于是接入并测通了,这一路是坎坎坷

    2024年02月12日
    浏览(31)
  • HybridCLR 热更新笔记 GF接入

    官方文档 Unity 版本(国际版): Unity 2020.3.26.f1 hybridclr_unity : https://gitee.com/focus-creative-games/hybridclr_unity.git#v2.0.0-rc 官方安装教程 添加 hybridclr_unity package 方法一: 在 Unity项目/Packages/manifest.json 文件中添加一行( 注意逗号, 末尾行不需要在后面加逗号 ) “com.focus-creative-games.hybrid

    2023年04月14日
    浏览(23)
  • GameFramework 框架详解之 如何接入热更框架HybridCLR

    HybridCLR是一个特性完整、零成本、高性能、低内存的近乎完美的c#热更新方案 GameFramework是一个非常出色完整的基于Unity引擎的游戏框架,里面包含了非常多的模块,封装非常完整。 以前市面上的热更大多数都是Lua为主,后来出了一个ILRuntime的C#热更框架,虽然性能差了点,但

    2024年02月07日
    浏览(37)
  • 【UGF】GameFramework接入HybridCLR(wolong)卧龙C#热更框架

    HybridCLR的推广已经做得相当好了,而且热更领域突然杀出一匹黑马,热度很高,不再多做介绍,可以点击进入HybridCLR开源地址了解详情。 在此之前用过tolua和xlua热更框架, 因为C#开发方式实在太爽,想支持热更又不想使用弱类型语言,于是对ILRuntime和HybridCLR进行了评估,了解

    2023年04月11日
    浏览(77)
  • [游戏开发]Unity Addressable打包策略

    Addressables的基础看这篇文章 Addressable全教程 最近公司在写新的框架,决定放弃老的bundle打包方式,使用Addressable,因此我要捋顺新的打包方案,并且解决所有疑问。 打包的最终目的是:build出一堆Bundle文件,而哪些因素会影响出包结果,总结一下有3个关键因素和1个非关键因

    2024年02月17日
    浏览(29)
  • Unity 之 Addressable可寻址系统 -- 将Resources加载资源方式修改为Addressable加载 -- 实战(一)

    加载方式: Resources 使用同步加载方式;Resources 加载资源时,应用程序将会被阻塞,直到资源加载完成,这可能会导致应用程序出现卡顿或挂起的情况。 Addressables 使用异步加载方式。这意味着使用 Unity 而使用 Addressables 加载资源时,应用程序可以继续运行,而不会出现卡顿

    2024年02月05日
    浏览(28)
  • Unity之Addressable使用注意事项

    Profile文件中配置资源构建路径和资源首次加载路径,资源如何设置了缓存,在首次加载之后会将再用缓存在缓存目录,后面将直接从缓存目录中读取,方便项目发包时候进行使用 AddressableAssetSettings文件 DisableCatalogUpdateOnStartup 勾选改选项,禁止自动更新,项目资源下载一般需

    2024年02月08日
    浏览(31)
  • Unity 如何基于addressable来做资源管理

    一、什么是Addressable系统 Addressable系统是Unity 2018.3版本中推出的一种资源管理方案,它可以帮助我们更好地管理游戏中的资源。在以往的游戏开发中,我们通常使用Resources来进行资源加载,但是这种方式存在很多问题,比如加载速度慢、内存占用高等。Addressable系统可以解决这

    2024年02月16日
    浏览(24)
  • 【Unity】xLua及热更新

            本文主要讲xLua的基本使用。看完有个基本认识还是可以了,简单的热更操作还是可以做到的,但更多细节内容依旧需要从官方文档中了解、学习。         xLua是由腾讯维护的一个开源项目,我们也可以将其看做一个插件。xLua为Unity、 .Net、 Mono等C#环境增加L

    2024年02月03日
    浏览(30)
  • Unity 之 Addressable可寻址系统 -- 资源热更新 -- 进阶(四)

    概述:Unity可寻址系统的资源热更是我遇到过最简单的热更方式了。只需修改资源组然后发布资源热更即可。本篇文章就来为讲解AA的资源热更,并通过CCD实现资源热更完整流程。 Addressables 将资源的引用和打包分开处理,可加快运行模式下和运行版本的项目迭代。系统将资源

    2023年04月08日
    浏览(65)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包