ILRuntime使用指南

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

前言
  • 最近闲着没事做,于是用ILRuntime做了一个小游戏
  • 中间遇到一些坑,对于ILRuntime的认识更清楚了。
  • 其它技巧
  • 自动转换DLL
设置引用文件夹
  • 我们在热更项目里面写代码的时候需要用到Unity的DLL,可是这些DLL引用起来查找就很麻烦。
  • 这时候可以设置文件夹
  • 编辑器就会自动提示需要引用的DLLILRuntime使用指南
实际环境如何引用DLL的
  • 这一点我很疑惑,比如我在热更里面用到了Unity的某个DLL
  • 可是在主工程里面又没有用到,那我在打包编译的时候,这个DLL就不会被放进去,那我热更的时候解释器找不到DLL怎么办
  • 最后我发现只需要CLR自动绑定就可以了
  • 大概原理就是把引用的DLL做一些包装,外加反射快速一些
[MenuItem("ILRuntime/Generate CLR Binding Code by Analysis")]
	static void GenerateCLRBindingByAnalysis()
	{
		//用新的分析热更dll调用引用来生成绑定代码
		ILRuntime.Runtime.Enviorment.AppDomain domain = new ILRuntime.Runtime.Enviorment.AppDomain();
		var bytes = File.ReadAllBytes(DefaultPath.LoadDllPath);
		using (var dllStream = new MemoryStream(bytes))
		{
			domain.LoadAssembly(dllStream);

			//Crossbind Adapter is needed to generate the correct binding code
			InitILRuntime(domain);
			ILRuntime.Runtime.CLRBinding.BindingCodeGenerator.GenerateBindingCode(domain, "Assets/ILRuntime/Generated");
		}

		AssetDatabase.Refresh();
	}

	static void InitILRuntime(ILRuntime.Runtime.Enviorment.AppDomain domain)
	{
		domain.RegisterCrossBindingAdaptor(new CoroutineAdapter());
		domain.RegisterCrossBindingAdaptor(new IAsyncStateMachineClassInheritanceAdaptor());
	}
  • 需要初始化绑定
		ILRuntime.Runtime.Generated.CLRBindings.Initialize(appdomain);

写适配器
  • 我本来以为只有当热更项目需要用到主工程的类和文件时候才需要写适配器
  • 其实对于ILRuntime不支持的一些功能,也需要自己写适配器
  • 比如async await需要写适配器,不过我在ILRuntime的issue里面找到一个写好的脚本
    异步适配器脚本
  • 协程也需要用适配器,而且要调用Unity主工程来调用
  • 协程适配器
  • 使用Unity的事件也需要写委托转换器
	appdomain.DelegateManager.RegisterDelegateConvertor<UnityEngine.Events.UnityAction>((act) =>
		{
			return new UnityEngine.Events.UnityAction(() =>
			{
				((Action)act)();
			});
		});
  • 其它各种类型的委托也需要自己定义
	appdomain.DelegateManager.RegisterMethodDelegate<UnityEngine.GameObject>();
		appdomain.DelegateManager.RegisterMethodDelegate<AsyncOperationHandle, Exception>();
		appdomain.DelegateManager.RegisterMethodDelegate<bool>();
		appdomain.DelegateManager.RegisterMethodDelegate<ILRuntime.Runtime.Intepreter.ILTypeInstance, ILRuntime.Runtime.Intepreter.ILTypeInstance>();
使用ILRuntime的Debug功能
  • 我只说一点
  • 按钮在这里ILRuntime使用指南
  • 如果你链接不上项目,就把VS和unity全部关了再打开一遍就可以

文章来源地址https://www.toymoban.com/news/detail-427016.html

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

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

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

相关文章

  • SQL简单使用指南

    SQL(结构化查询语言)是一种用于管理和操作关系型数据库的标准化语言。 数据库是用于存储和组织数据的结构。它由表(表格)组成,每个表都包含多个列和行。以下是SQL中最常用的一些关键术语: 表(Table) :数据库中的基本组织单位,它由列和行组成。 列(Column)

    2024年02月13日
    浏览(41)
  • Polars使用指南(二)

    在上一篇文章中,我们介绍了Polars的优势和Polars.Series的常用API,本篇文章我们继续介绍Polars.Series的扩展API。 对于一些特殊的数据类型,如 pl.Array、list、str 等,Polars.Series 提供了基于属性的直接操作API,如果可以使用下述API实现的功能,应尽量避免使用 map_elements,因为效率

    2024年01月23日
    浏览(45)
  • Sqlmap使用指南

    使用流程: 当给sqlmap一个url的时候,它会有如下流程: 1、判断可注入的参数 2、判断可用哪种SQL注入技术进行注入 3、识别出哪种数据库 4、根据用户选择,读取哪些数据 支持的模式(5种) 1、基于布尔的盲注,即可根据返回页面判断条件的真假的注入 2、基于时间的盲注,

    2024年02月08日
    浏览(42)
  • thegraph使用指南

    Ethereum mainnet Kovan Rinkeby Ropsten Goerli PoA-Core PoA-Sokol xDAI Matic Mumbai Fantom Binance Smart Chain Clover Avalanche Fuji Celo Celo-Alfajores Fuse Moonbeam Arbitrum One Arbitrum Testnet (on Rinkeby) Optimism Optimism Testnet (on Kovan) 安装yarn,node环境 设置yarn仓库 curl --silent --location https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee

    2024年02月09日
    浏览(46)
  • Docker 网络使用指南

    目录 前言 Docker网络类型 Docker 网络概念 使用 Docker 网络 运行容器并连接到网络 检查网络 清理网络资源 Docker Compose网络 Docker 是一种容器化平台,它允许你将应用程序和它们的依赖项打包成一个称为容器的独立单元。Docker 提供了一种轻量级、可移植和自包含的方式来部署应用

    2024年02月05日
    浏览(41)
  • ZED使用指南(一)

    将相机插入USB3.0端口。 进入下载的文件夹: 使用chmod +x命令增加安装程序的执行权限,注意将名称替换为自己下载的版本: 运行: 安装开始时,会显示软件许可证Software License,按Enter看完后按q。 在安装过程中,需要回答有关依赖项dependencies,工具tools和示例samples的安装的

    2024年02月16日
    浏览(41)
  • myspl使用指南

    mysql数据库 使用命令行工具连接数据库 -u表示后面是用户名 -p表示后面是密码 -h表示后面是主机名,登录当前设备可省略。 如我们要登录本机用户名为root,密码为123456的账户: 按回车,然后再输入密码即可。 使用代码连接 显示mysql中的所有数据库(mysql中可以有很多个数据

    2024年02月10日
    浏览(38)
  • Ollydbg使用指南

    OllyDebug,简称OD,一种反汇编软件,动态追踪工具,将IDA与SoftICE结合起来的思想,Ring 3 级的调试器。OllyDebug的使用界面是可视化操作。 OD有很多民间的版本,菜单栏和和工具栏的配置可能有所差别。比较好用的是吾爱破解和吾爱汇编的中文Ollydbg版本。 深入学习OllyDBG的调试技

    2023年04月08日
    浏览(67)
  • Github的使用指南

    打开giuhub官网,右上角点击你的头像,随后点击 your repositories 点击New开始创建仓库 如下图为创建仓库的选项解释 出现如下界面就可以进行后续的git指令操作了 进入需上传项目的所在目录,打开git命令行,输入如下命令开始初始化git仓库,这将在你的项目文件夹中创建一个名

    2024年02月12日
    浏览(37)
  • CuteHttpFileSever使用指南

    浏览器访问,多端互通 局域网传输,速度很快 官方网址 我下载时比较慢,好在文件不大 个人蓝奏云网址 文件提取码:1lqd 官网下载说明 官网页面见下图 1 是windows内的安装包,根据自己电脑配置选择 2 是图形化界面的软件 以上两种选其一即可 图形化界面使用教程 双击图形

    2024年02月05日
    浏览(35)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包