提交 a8f32847 编写于 作者: J johnche

把条件编译宏的处理挪到FAQ

上级 2eb06e48
......@@ -55,11 +55,15 @@ public int Add(int a, int b)
}
~~~
#### 如果要修复的函数不含条件编译宏
执行"InjectFix/Fix"菜单。
补丁制作成功后会放到工程目录下,文件名为“{Dll Name}.patch.bytes”(比如:“Assembly-CSharp.patch.bytes”),上传补丁到手机,加载就能看到效果。
注意事项:如果要Patch的函数存在条件编译宏,比如这样的代码:
#### 如果要修复的函数存在条件编译宏
比如这样的代码:
~~~csharp
[Patch]
......@@ -77,17 +81,7 @@ public void Job(int a)
如果还是直接在编辑器下直接生成补丁,将会比手机上运行多调用了个Foo,少调用了个Bar,这可能会导致各种问题:逻辑不对,调用了编辑器专用函数而导致找不到要调用的函数等等。
这时可以按对应平台的编译参数把Assembly-CSharp.dll编译出来,然后调用IFix.Editor.IFixEditor.GenPatch去生成补丁。
Unity编译是在工程的Temp目录新建一个文件,把命令行参数放到那个文件,然后执行类似(目录根据自己的unity安装情况而定)如下命令进行编译:
~~~bash
"D:\Program Files\Unity201702\Editor\Data\MonoBleedingEdge\bin\mono.exe" "D:\Program Files\Unity201702\Editor\Data\MonoBleedingEdge\lib\mono\4.5\mcs.exe" @Temp/UnityTempFile-55a959adddae39f4aaa18507dd165989
~~~
你可以尝试一次编辑器下的手机版本打包,然后到工程目录下的Temp目录把那个临时文件拷贝出来(编译完会自动删掉,所以要手快)。