[Unity 3d]解决 UMP Can't load 'lib
2021-08-15 本文已影响0人
雨落随风
这是一篇碎碎念的 UMP Bug 修正笔记,希望能帮助有需要的朋友。
UMP :Universal Miedia Player
前言
买了 PRO 授权,更新下Unity 版本不过分吧(笔者更新到Unity 2019.4.13f1),本想期待有啥惊喜,emmm.... 惊喜没有惊吓倒是来了。如图,居然找不到 dll 了...
失效分析
- 确认 AssetsStore ,UMP 为最新版本。
- 调试输出 UMP 请求的 dll 路径,发现该地址与打包后 libvlccore.dll 所在目录不一致。
- 确认新版本 Unity 出包后 dll 路径较低版本 Unity 多了个 x86 或者 x86_64 的层级。
至此真相大白:为新版本Unity把Dll 转移到了 x86 / x86_64 文件夹,而插件未及时更新导致的。
解决方案
1. 高版本 Unity 在出 PC 包的时候,32位系统下 dll 放在 x86 文件夹,64位则放在 x86_64 文件夹下。我们使用 API System.Environment.Is64BitProcess
确认程序是 32 位还是 64 位。
2. 使用 宏 补充完善高版本中发生的变化,即高版本Unity路径需要多加 x86 或者 x86_64 这么一层 ,按图索骥,做如下修改,该步骤保证打包后获取到正确的 dll 路径:
UMPSettings.EditorBitMode 需修改成这样子 UMPSettings.GetLibrariesPath 需加这么几句话3. UMP 内置了超级多的解码相关 dll 放在 plugins 文件夹下,(示例: Assets/UniversalMediaPlayer/Win/x86/plugins
),按图索骥,修改 UMPPostBuilds ,使其能够正确的转移 plugins 文件夹:
UMPPostBuilds.BuildWindowsPlayer32
UMPPostBuilds.BuildWindowsPlayer64
写到最后
- 该插件不支持中文路径,别不信,我试过。
- 插件路径就放在 Assets 文件夹根节点,作者代码中约定的。
- 插件好像2019年就停更了,更新了 Unity 都会存在这个问题,很有必要做个笔记,希望能够帮助到大家,省下些许试错成本。
- 做监控播放,请直接使用监控厂商的 SDK ,UMP 难堪大用!