智慧城市之 Cesium For Unity3D 功能扩展(Native 编译)
燊仙
编辑于 2024年06月17日 10:28

CesiumForUnity3D-Native编译

编译源码(演示在Winodws11中编译)

00:30 准备环境

一、准备环境:

1、CMake V3.15以上(演示版本:3.26.3)

验证:在CMD 或 GIT中 输入

cmake --version (回车)

显示:cmake version 版本号

CMake suite maintained and supported by Kitware (kitware.com/cmake).

则安装成功(不成功可能需要配置环境变量)

2、NET SDK V6.0以上(演示版本:7.0.302)

验证:在CMD 或 GIT中 输入

 dotnet --version (回车)

显示: 版本号

则安装成功

3、VisualStudio (推荐2022(17))

可能需要 附加CMake开发工具(C++桌面开发)

4、Windows启用长文件路径的支持

(不会看这里:https://blog.csdn.net/weixin_46356818/article/details/121029550)

5、nasm

(下载地址:https://www.nasm.us/pub/nasm/releasebuilds/2.16.01/win64/)

6、Git 、 CMD

02:46 克隆原项目

二、克隆原项目

1、进入 文件需要存放的目录(自行创建)

切换盘符:输入 盘符:

进入目录:输入 cd 目录路径

2、克隆项目

下载 输入:git clone --recurse-submodules https://github.com/CesiumGS/cesium-unity-samples.git

03:49 下载完成

3、进入Package

输入: cd cesium-unity-samples/Packages/

4、拉取插件 并取名com.cesium.unity

04:47 开始拉取插件

输入:git clone --recurse-submodules https://github.com/CesiumGS/cesium-unity.git com.cesium.unity

等待下载完成

05:03 下载完成

PS:此次拉取中有部分文件拉取失败的,后面会手动下载,暂时不用管

05:24 安装Reinterop

5、安装cesium 官方插件:Reinterop

1)进入com.cesium.unity文件夹

输入:cd com.cesium.unity/

2)安装Reinterop

输入: dotnet publish Reinterop~ -o .

等待安装完成

06:37 完成

三、编译

1、Unity进行第一次编译

用Unity打开 该项目(修改版本的方法参照 第一节 的内容)

06:59 打开项目

已经有Cesium插件,但提示错误。

报错原因是没有编译,暂时不用管他

这时可关闭Unity,准备CMake编译

08:05 提示错误

08:24 CMake编译

2、CMake编译

1)进入native

输入:cd native~

路径:

cesium-unity-samples\

Packages\com.cesium.unity\native~

2)编译:

输入:cmake -B build -S . -G "Visual Studio 17 2022" -DCMAKE_BUILD_TYPE=Debug

09:07 cmake编译

此次编译会报错,错误为文件缺失:

09:32 缺失文件

解决方法:

10:01 补充文件

在官网:

https://github.com/CesiumGS/cesium-unity

找到 native~/exetern 文件下的空文件夹对应的文件 进行手动下载,并补充到项目对应位置中,

补充完毕后,再次执行编译:

输入:cmake -B build -S . -G "Visual Studio 17 2022" -DCMAKE_BUILD_TYPE=Debug

(如果 还有报错,可以查看报错文件的来源,进行进行补充,补充后 依旧再次执行:

12:32 编译完成

3、VS编译

13:50 生成解决方案

找到native~/build 文件夹下的

CesiumForUnityNative.sln文件,用VisualStudio2022打开

在方案管理器中 右键解决方案 选择生成解决方案,等待生成完成

14:05 生成完成

1)在native~/build/Runtime/Debug 中,有动态库文件:CesiumForUnityNative-Runtime.dll

2)在native~/build/Editor/Debug 中,有动态库文件:CesiumForUnityNative-Editor.dll

3)将两个文件其拷贝至com.cesium.unity/Editor文件夹下

16:18 拷贝结果

最后

拷贝完成后打开Unity项目,(不用再下载CesiumForUnity包)能正常显示,无报错,则编译成功。

16:37 成功

使用中的一些补充:

一、在拷贝项目时 git clone --recurse-submodules 理论上是可以将所有子模块完全下载,而UP演示的报错 通常是两个原因:

1、git的缓存小于文件

2、git文件路径过长而git并未设置使用长文件路径,

虽然理论上可以 在修改git后 可以直接下载完整个cesium-unity.git(com.cesium.unity文件夹内的)项目,但实测中,到加载模块

1)native~\extern\cesium-native\extern\CSPRNG

2)native~\extern\cesium-native\extern\Catch2

3)native~\extern\cesium-native\extern\GSL

等等

时会卡住,调整起来反倒麻烦,不如就按照UP的方法: 找到空文件夹然后再手动下载内容。

二、在实际操作时,在CMake编译 生成build 后,用VS生成解决方案时 遇到了 一个错误:

KTX-Software 中的 version.h文件丢失 和Debug/xxx丢失 的问题,二退出编译 导致 放入Editor的两个文件~-Runtime.dll 会无法生成,根据 KTX的使用说明

https://github.com/CesiumGS/KTX-Software/blob/dd389bdfd05343ddcd374614c71de66849bd3df4/BUILDING.md

中 叙述:

需要 先

进入 KTX-Software的文件目录下

输入:cmake . -B build -D KTX_FEATURE_LOADTEST_APPS=ON -D KTX_FEATURE_DOC=ON(-D KTX_FEATURE_TOOLS_CTS=ON -D BASISU_SUPPORT_OPENCL=ON)

括号内内容选填, 编译后 再输入:

cmake --build build

完成后,将 Debug文件 复制后 放入KTX-Software文件目录下 则可修复发包时的这两个报错

三、现在 还遗留一个问题 ,在项目中 已经可以和UP一样完整的显示 并且没有报错,但是 发布后,看不见地面,通过Debug发现问题

这 眼熟的报错……

该问题 尚未得到解决(那个DLL处理了半天 打包不跟着走?!),如果 有大佬知道的话 还望不吝赐教,谢谢

在下写这内容的时候主要是总结UP的操作流程,如有理解错误的地方欢迎指正,定及时修改,谢谢各位大佬