Unity之C#注入

本文介绍了在Unity环境中使用Mono.Cecil库进行C#代码注入的技术。Unity基于Mono实现跨平台,.Net在运行时会将C#代码编译为IL指令集。Mono.Cecil允许对已编译的IL文件进行注入操作,适用于.NET平台及Unity项目。文中展示了如何创建Unity C#脚本,并详细解释了Mono.Cecil的关键API,如AssemblyDefinition、ModuleDefinition、TypeDefinition和MethodDefinition。利用代码注入,可以实现如C#热更新等功能。
摘要由CSDN通过智能技术生成

众所周知,Unity采用Mono实现跨平台。.Net在运行PE类型文件时(如dll,exe)会将此类文件在第一次加载时编译出IL指令集的文件,此后每次运行该程序只需将IL文件加载进内存即可。如题,实现C#的注入即实现对编译好的IL文件代码的注入。这里需要一个强大的库文件,Mono.Cecil。

Mono.Cecil提供对一个PE类型文件的IL注入,适用于.net平台,同样适用于Unity生成的程序。

首先创建一个Unity的C#脚本,代码如下:

using UnityEngine;
using System.Collections;

public class MonoCecilGameObject : MonoBehaviour {
    private static MonoCecilGameObject  mMonoCecil;

    void Awake() {
        mMonoCecil = this;
        UnityEngine.Object.DontDestroyOnLoad(gameObject);
    }

    void Start() {
        Debug.Log("this is a MonoCecil GameObject haha");
    }

    public static MonoCecilGameObject MMonoCecil
    { 
        get {  
            return mMonoCecil;
        }
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值