Unity 外部 DLL 无法引用 TextMeshPro

941 阅读1分钟

问题

创建 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 引用就没问题。