focus-creative-games / hybridclr_trial

HybridCLR 示例项目
https://code-philosophy.com/
850 stars 176 forks source link

有个可复现的问题. 按下面的操作, 报 MissingMethodException #31

Closed stendhal23 closed 5 months ago

stendhal23 commented 5 months ago

1) LoadDll#AOTMetaAssemblyFiles 添加一个 "UnityEngine.CoreModule.dll.bytes" 2) 菜单: Build --> Win64 3) 运行win64 player。 正常 4) 在 HotUpdate 的 Entry#Start() 里添加一行并保存: Debug.Log($" Screen width:{Screen.width}"); 5) 清空 Assets/StreamingAssets 目录; 点击菜单: Build --> BuildAssetsAndCopyToStreamingAssets 6) 复制 Assets/StreamingAssets 目录下所有文件到 Release-Win64/HybridCLRTrial_Data/StreamingAssets 覆盖原文件. 7) 运行win64 player。 能成功打印. 8) 把 Debug.Log($" Screen width:{Screen.width}"); 改成 Debug.Log($" Screen resolution:{Screen.currentResolution}"); 并保存 9) 重复第 5), 6) 步. 10) 运行win64 player。 报 MissingMethodException: MethodNotFind UnityEngine.Screen::get_currentResolution

stendhal23 commented 5 months ago

在不重新 build 整个 player 的情况下, 是不是没办法只通过新的 AOT 补充元数据 dll 来 让 热更新dll 使用 之前没被 AOT dll 包含进去的类? 是这么理解吗: 3 个不同的实体: 热更新dll, AOT dll, AOT 补充元数据 dll;

pirunxi commented 5 months ago

请查看文档中关于类型裁剪的相关说明