我是在Unity 2019.4.10中调用.dll文件中的函数传递string参数时出现的这个错误。
ExecutionEngineException: String conversion error: Illegal byte sequence encounted in the input.
引擎执行异常:字符串转换错误:在输入中遇到非法的字节序列。
在网上搜索到了两种解决方式如下:
解决方案一:
删除项目中的 .js 脚本。
原因:Unity 2017.2测试版的Create Assets菜单下已经不再包含Javascript(即UnityScript)选项,建议使用C#脚本重新实现逻辑。
解决方案二:
将计算机名称、应用程序的名称、脚本路径修改为单字节字符(英文)。
原因:有些编码不支持双字节字符。
但是这两种方式没有解决我的问题,于是经过我半天的摸索,找到了问题的原因:
dll文件源代码和Unity使用的.NetFramework版本不一致。
Unity 2019.4.10默认使用的.Net 4,所以我使用Unity 2018.2.1进行了测试,如下图,切换回.Net 3.5 Equivalent 就没有问题了。
至于Unity 2019.4.10,官方文档显示如下图:.Net 3.5已弃用。
可以考虑修改dll文件源代码的.NetFramework版本。