发布时间:2019-05-04编辑:佚名阅读(6317)
dnspy可以调试Unity调试版本和发布版本。发布版本需要修改mono.dll/mono-2.0-bdwgc.dll文件。
也可以将发布版本转换为调试版本。
备份您的游戏。
您需要一个补丁mono.dll/mono-2.0-bdwgc.dll文件。您可以在发布页面上找到Unity4.x、5.x和2017.x-2018.x的32位和64位版本。
你需要知道用于构建游戏的统一版本。要获取Unity版本号,请检查<game>.exe或unityplayer.dll的文件属性。
您还需要知道它是32位还是64位游戏。如果是32位游戏,请使用win32目录;如果是64位游戏,请使用win64目录。
不同的Unity版本使用不同的mono.dll文件名。旧的Unity游戏使用.NET 2.0-3.5程序集并使用mono.dll,而新的Unity游戏使用.NET 4.x程序集则使用mono-2.0-bdwgc.dll。此文件存储在不同的位置,具体取决于Unity版本:
<root>\<GAME>_Data\Mono\mono.dll
<root>\<GAME>_Data\Mono\EmbedRuntime\mono.dll
<root>\<GAME>_Data\MonoBleedingEdge\EmbedRuntime\mono-2.0-bdwgc.dll
<root>\Mono\EmbedRuntime\mono.dll
<root>\MonoBleedingEdge\EmbedRuntime\mono-2.0-bdwgc.dll
将dnspy的补丁mono.dll/mono-2.0-bdwgc.dll文件复制到游戏中,覆盖其文件。
现在转到debug->start debugging并选择Unity debug engine。如果游戏崩溃,您可能使用了错误的版本,或者在游戏为64位时使用了32位文件,反之亦然。
如果游戏已经开始,您也可以选择Unity(连接)。dnspy的mono.dll将查找名为dnspy_unity_dbg(Unity with.NET 2.0-3.5程序集)或dnspy_unity_dbg2(Unity with.NET 4.x程序集)的环境变量。
DNSPY_UNITY_DBG:
--debugger-agent=transport=dt_socket,server=y,address=127.0.0.1:55555,defer=y or
--debugger-agent=transport=dt_socket,server=y,address=127.0.0.1:55555,defer=y,no-hide-debugger to enable detection of the debugger.
DNSPY_UNITY_DBG2:
--debugger-agent=transport=dt_socket,server=y,address=127.0.0.1:55555,suspend=nor
--debugger-agent=transport=dt_socket,server=y,address=127.0.0.1:55555,suspend=n,no-hide-debugger to enable detection of the debugger.
如果环境变量丢失,它将侦听端口55555。
如果您想自己编译mono.dll,请参阅https://github.com/0xd4d/dnspy-unity-mono
在启用脚本调试的情况下生成开发版本,或者将发布版本转换为调试版本,请参见下面的
在Unity编辑器中运行游戏或按Play
启动dnspy并转到debug->attach to process(unity)
注意:在使用mono-2.0-bdwgc.dll的Unity版本中有一个“跨步”错误。使用补丁mono-2.0-bdwgc.dll,它有缺陷修复。
如果您在对话框中看不到游戏,则整个过程可能在没有键盘焦点时暂停。在这种情况下,在dnspy中按刷新,然后快速切换回游戏,然后再切换回dnspy。如果你仍然看不到它,等到它的介绍结束后再试一次。
如果您仍然看不到游戏,那么它可能不是一个统一游戏或调试构建。
在资源管理器中查看exe的属性。你应该看到统一版本号。
转到Unity下载存档并下载并安装正确版本的Unity编辑器。您可以在<unity install dir>\editor\data\playbackengines\windowsstandalonesupport\variations中找到Windows播放器。
最有可能的情况是,您需要win32_development_mono中的文件,因为它可能是一个32位的游戏。
备份您的游戏。将debug build data目录复制到您的games<name>数据目录,覆盖其中的所有内容。
旧的Unity版本:复制player_win.exe并将其重命名为<game name>.exe。
更新的Unity版本:复制windowsplayer.exe+unityplayer.dll,并将windowsplayer.exe重命名为<game name>.exe。
要启用脚本(.net)调试,必须在<game name>数据目录中创建一个文件。
如果是Unity 4.x-5.x或Unity 2017.1:
<game name>游戏数据\游戏连接配置文件
例子:
listen 3060108046 1 1
或者是Unity 2017.2或更高版本
<game name>\u data\boot.config
例子:
player-connection-mode=Listen player-connection-guid=3060108046 player-connection-debug=1 player-connection-wait-timeout=-1 player-connection-ip=123.45.67.89
似乎只需要player connection debug=1,其他行可以删除。
上一篇:unity3d导入fbx动画
下一篇:.NET中的XML注释
4人
0人
2人
1人