代码拉取完成,页面将自动刷新
同步操作将从 focus-creative-games/hybridclr 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
参考资料
以下为了方便起见,发布win下pc版本。其他平台同理。
简单来说,就是将 il2cpp_huatuo 项目的libil2cpp与 huatuo项目的huatuo目录合并,形成最终的libil2cpp目录,再替换安装目录的原始libil2cpp目录。
至此即完成huatuo安装,后续打包出的app就能支持c#热更新。
public class App
{
public static int Main()
{
Debug.Log("hello,huatuo");
return 0;
}
}
主工程中,使用标准反射函数加载Hotfix.dll,以示例 LoadDll.cs 为例
如果需要加载AssetBundle, 请查看示例工程中的LoadDllFromAssetBundle.cs文件
同时也在菜单中添加了简单hotfix.dll文件的ab制作工具
public class LoadDll : MonoBehaviour
{
void Start()
{
LoadGameDll();
RunMain();
}
private System.Reflection.Assembly gameAss;
private void LoadGameDll()
{
#if !UNITY_EDITOR
// 此代码在Android等平台下并不能工作,请酌情调整
string gameDll = Application.streamingAssetsPath + "/HotFix.dll";
gameAss = System.Reflection.Assembly.LoadFile(File.ReadAllBytes(gameDll));
#else
gameAss = AppDomain.CurrentDomain.GetAssemblies().FirstOrDefault(assembly => assembly.GetName().Name == "HotFix");
#endif
}
public void RunMain()
{
if (gameAss == null)
{
UnityEngine.Debug.LogError("dll未加载");
return;
}
var appType = gameAss.GetType("App");
var mainMethod = appType.GetMethod("Main");
mainMethod.Invoke(null, null);
}
}
Build & Run
测试热更新
修改HotFix模块中的 App::Main代码。改成
public class App
{
public static int Main()
{
Debug.Log("hello,world");
return 0;
}
}
将编译后的Hotfix.dll 复制替换发布目标目录下的 StreamingAssets下的Hotfix.dll,重新运行程序。 你应该会看到打印出 "hello,world"。
至此完成。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。