众所周知,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;
}
}
}