问题
创建 C# DLL 库来让 Unity 进行引用,但是自建的库需要引用到 TextMeshPro DLL,而在 Unity 2018 里,TextMeshPro 就以源码的形式来存放的,路径在Library\PackageCache,其 DLL 路径在Library\ScriptAssemblies里,将Unity.TextMeshPro.dll来进行引用的话,会出现调用TextMeshPro里的接口时,会无法编译通过,如下所示:
原因
通过ILSpy
工具分析,可以看到TextMeshPro
引用的是UnityEngine.CoreModule,跟外部DLL引用的不同,导致对应不上。
解决
新建个 C# DLL 工程,引用TextMeshPro所有源文件,来自己编译一个TextMeshPro.dll
,即可。
用添加为链接
的方式,来加入所有TextMeshPro所有源文件,编译成DLL,通过ILSpy
工具分析,可以看到TextMeshPro
引用的是UnityEngine,这样给外部 DLL 引用就没问题。
再次用 ILSpy查看
还有1个原因:
包含toLua框架的项目 压缩成zip之前没有 Clear wrap files, 只需要在菜单栏 Lua---->Clear wrap files一下即可