当前位置: 首页 > news >正文

ILRuntime中实现OSA

什么是ILRuntime?

ILRuntime项⽬为基于C#的平台(例如Unity)提供了⼀个 纯 C# 实现 , 快速 、 ⽅便 且 可靠 的IL 运⾏时,使得能够在不⽀持JIT的硬件环境(如iOS)能够实现代码的热更新。具体可以学习: http://http s://ourpalm.github.io/ILRuntime/public/v1/guide/index.html ,本文不再赘述。

代码实现

OSABaseAdapter

using System;
using ILRuntime.Runtime.Enviorment;
using ILRuntime.Runtime.Intepreter;
using ILRuntime.CLR.Method;
using Com.TheFallenGames.OSA.Core;
public class OSABaseAdapter : CrossBindingAdaptor
{public override Type BaseCLRType{get{return typeof(Com.TheFallenGames.OSA.Core.OSA<Com.TheFallenGames.OSA.CustomParams.BaseParamsWithPrefab, Com.TheFallenGames.OSA.Core.BaseItemViewsHolder>);}}public override Type AdaptorType{get{return typeof(Adaptor);}}public override object CreateCLRInstance(ILRuntime.Runtime.Enviorment.AppDomain appdomain, ILTypeInstance instance){return new Adaptor(appdomain, instance);}//为了完整实现MonoBehaviour的所有特性,这个Adapter还得扩展,这⾥只抛砖引⽟,只实现了最常⽤的Awake, Start和Updatepublic class Adaptor : Com.TheFallenGames.OSA.Core.OSA<Com.TheFallenGames.OSA.CustomParams.BaseParamsWithPrefab, Com.TheFallenGames.OSA.Core.BaseItemViewsHolder>, CrossBindingAdaptorType{ILTypeInstance instance;ILRuntime.Runtime.Enviorment.AppDomain appdomain;public Adaptor(){}public Adaptor(ILRuntime.Runtime.Enviorment.AppDomain appdomain, ILTypeInstance instance){this.appdomain = appdomain;this.instance = instance;Start();}public ILTypeInstance ILInstance{get { return instance; }set{instance = value;}}public ILRuntime.Runtime.Enviorment.AppDomain AppDomain{get{return appdomain;}set { appdomain = value; }}IMethod mStart;bool mStartGot;protected override void Start(){base.Start();}IMethod mInitData;bool mInitDataGot;public void InitData(){if (!mInitDataGot){mInitData = instance.Type.GetMethod("InitData", 0);mInitDataGot = true;}if (mInitData != null){appdomain.Invoke(mInitData, instance, null);}}IMethod mCreateViewsHolder;bool mCreateViewsHolderGot;protected override BaseItemViewsHolder CreateViewsHolder(int itemIndex){if (!mCreateViewsHolderGot){mCreateViewsHolder = instance.Type.GetMethod("CreateViewsHolder", 1);mCreateViewsHolderGot

相关文章:

  • 第20天-python生成word文档
  • [Linux] Linux信号量深度解析与实践(代码示例)
  • C++ for QWidget:正则表达式和QRegExp
  • 提升搜索效率:深入了解Amazon Kendra的强大功能
  • ERP 与 WMS 对接深度解析:双视角下的业务与技术协同
  • origin绘图之【如何将多条重叠、高度重叠的点线图、折线图分开】
  • CASAIM与荣耀达成合作,三维数字化检测技术助力终端消费电子制造实现生产工艺智能优化
  • 【Elasticsearch】字段别名
  • RPA浪潮来袭,职业竞争的新风口已至?
  • 适合初学者的 Blender和怎么下载 Blender格式模型
  • Redis从入门到实战 - 高级篇(下)
  • C++ 输出流格式控制
  • AI加速芯片全景图:主流架构和应用场景详解
  • 多模态学习笔记
  • WordPress Madara插件存在文件包含漏洞(CVE-2025-4524)
  • Java开发-如何将一个字符串转换成一个数组,又如何把他转换成一个集合
  • C++:vector容器
  • 软考中级软件设计师——操作系统考试题型
  • 什么是“架构孤岛”?如何识别与整合?为什么现代企业在追求敏捷开发的同时,反而更容易陷入架构孤岛陷阱?
  • 网络编程概述
  • 伦教网站开发/湖南seo优化价格
  • 制作自己的名字免费的/seo草根博客
  • 重庆模板做网站/今日全国疫情一览表
  • 有什么做数学题的网站/seo职位
  • 腾讯做的电子商务网站/移动端关键词排名优化
  • 网站上怎么做弹幕效果图/百度网页电脑版入口