您的位置:首页 > 财经 > 金融 > 企业网站建设总结_cms是什么公司简称_西安企业seo外包服务公司_淘宝关键词查询

企业网站建设总结_cms是什么公司简称_西安企业seo外包服务公司_淘宝关键词查询

2025/1/11 23:33:27 来源:https://blog.csdn.net/Thomas_YXQ/article/details/144902413  浏览:    关键词:企业网站建设总结_cms是什么公司简称_西安企业seo外包服务公司_淘宝关键词查询
企业网站建设总结_cms是什么公司简称_西安企业seo外包服务公司_淘宝关键词查询

引言

ILRuntime是一款基于C#的热更新框架,使用IL2CPP技术将C#代码转换成C++代码,支持动态编译和执行代码,适用于Unity3D的所有平台,包括Android、iOS、Windows、Mac等。本文将详细介绍ILRuntime在Unity3D中的开发原则及接口绑定技术,并提供相关代码示例。

对惹,这里有一个游戏开发交流小组,希望大家可以点击进来一起交流一下开发经验呀!

ILRuntime基本开发原则

  1. 理解两个不同执行环境
  • ILRuntime的逻辑热更项目中的类不能直接继承Unity C#项目中的类,Unity C#项目中也不能直接识别逻辑热更项目中开发的“组件类”。
  • Unity C#的对象实例与接口在逻辑热更项目中不能直接new出来,需要通过Unity C#项目传递过来或直接调用Unity C#项目的接口生成。
  • 逻辑热更项目的功能
  • 逻辑热更项目主要负责代码逻辑,使用Unity做好的资源、Unity引擎与Unity C#项目提供的基础服务。
  • 热更新时,将逻辑热更项目生成的.dll当作二进制资源进行更新。

  1. ILRuntime项目的启动流程
  • 启动Unity C#的代码,下载并加载最新的逻辑代码.dll(逻辑热更项目生成)。
  • ILRuntime解释器解释执行逻辑代码.dll,进入逻辑代码的入口。
  • 逻辑代码使用底层的资源、Unity组件与底层C#开发的接口。

接口绑定技术详解

ILRuntime通过生成绑定代码,使得逻辑热更项目可以调用Unity引擎的API。这一技术主要依赖于.NET的.dll和ILRuntime的绑定机制。

  1. 绑定代码生成
  • 在进行.dll开发时,如果调用了其他.dll库,生成.dll时会为调用的接口做一个“符号”。
  • 运行时,根据符号加载依赖的.dll,然后重定向这些符号,使得在调用时能够跳到正确的函数。
  • 具体实现步骤
  • 安装ILRuntime插件,导入Unity3D。
  • 创建一个热更新脚本,继承ILRuntime.Runtime.CLRBinding.BindingCodeGenerator,并实现GenerateBindingCode方法。
  • 在Unity3D中,通过菜单栏的Tools->ILRuntime->Generate CLR Binding Code生成绑定代码。

代码实现

以下是一个简单的例子,演示如何使用ILRuntime进行热更新及接口绑定。

  1. 创建热更新脚本
using System;
using System.Collections.Generic;
using ILRuntime.Runtime.CLRBinding;
public class HotfixCodeGenerator : BindingCodeGenerator
{
public override IEnumerable<Type> GetTypesToGenerate()
{
return new Type[] { typeof(int), typeof(string) };
}
public override IEnumerable<MethodInfo> GetMethodsToGenerate()
{
return null;
}
public override IEnumerable<PropertyInfo> GetPropertiesToGenerate()
{
return null;
}
public override IEnumerable<FieldInfo> GetFieldsToGenerate()
{
return null;
}
public override IEnumerable<EventInfo> GetEventsToGenerate()
{
return null;
}
public override IEnumerable<Type> GetCrossBindingTypes()
{
return null;
}
}
  1. 生成绑定代码
  • 在Unity3D中,打开菜单栏的Tools->ILRuntime->Generate CLR Binding Code,选择刚才创建的热更新脚本HotfixCodeGenerator.cs,点击Generate按钮生成绑定代码。
  • 创建HotfixManager脚本
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
using ILRuntime.Runtime.Enviorment;
public class HotfixManager : MonoBehaviour
{
private static HotfixManager instance;
public static HotfixManager Instance
{
get
{
if (instance == null)
{
instance = FindObjectOfType<HotfixManager>();
}
return instance;
}
}
private AppDomain appDomain;
private void Awake()
{
instance = this;
}
public void Init()
{
appDomain = new AppDomain();
string dllPath = Application.streamingAssetsPath + "/Hotfix.dll";
if (File.Exists(dllPath))
{
byte[] dllBytes = File.ReadAllBytes(dllPath);
MemoryStream dllStream = new MemoryStream(dllBytes);
appDomain.LoadAssembly(dllStream);
}
}
public object Invoke(string typeName, string methodName, object[] args)
{
object obj = appDomain.Instantiate(typeName);
return appDomain.Invoke(methodName, obj, args);
}
}
  1. 在游戏启动时初始化ILRuntime并加载DLL
void Start()
{
HotfixManager.Instance.Init();
// 其他初始化代码
}
  1. 调用热更新代码
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
// 假设有一个热更新中的方法名为"HotfixMethod",没有参数
HotfixManager.Instance.Invoke("Namespace.ClassName", "HotfixMethod", null);
}
}

结论

ILRuntime为Unity3D提供了一种高效的热更新方案,通过生成绑定代码,使得逻辑热更项目能够调用Unity引擎的API。本文详细介绍了ILRuntime的基本开发原则、接口绑定技术,并提供了具体的代码实现示例,希望能够帮助开发者更好地理解和应用ILRuntime。

更多教学视频

Unity3D​

www.bycwedu.com/promotion_channels/2146264125

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com