问题
创建 C# DLL 库来让 Unity 进行引用,但是自建的库需要引用到 TextMeshPro DLL,而在 Unity 2018 里,TextMeshPro 就以源码的形式来存放的,路径在Library\PackageCache
,其 DLL 路径在Library\ScriptAssemblies
里,将Unity.TextMeshPro.dll
来进行引用的话,会出现调用TextMeshPro里的接口时,会无法编译通过,如下所示:
error CS0012: 类型“Transform”在未引用的程序集中定义。必须添加对程序集“UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null”的引用。
原因
通过ILSpy
工具分析,可以看到TextMeshPro
引用的是UnityEngine.CoreModule,跟外部DLL引用的不同,导致对应不上。
解决
新建个 C# DLL 工程,引用TextMeshPro所有源文件,来自己编译一个TextMeshPro.dll
,即可。
用添加为链接
的方式,来加入所有TextMeshPro所有源文件,编译成DLL,通过ILSpy
工具分析,可以看到TextMeshPro
引用的是UnityEngine,这样给外部 DLL 引用就没问题。