前言
Cesium底层为Cesium Native(C++),官方制作了unity、unreal等包体供不同平台使用,但是想要更改、添加某些功能就需要在底层进行修改,这就涉及到源码编译。只有在源码修改再编译,引入平台才能实现想要的功能,unreal因为本身就是C++的官方语言有不少人进行扩展,unity发展相对慢一些,下面就介绍如何根据官方文档进行自定义修改。
一、前置条件
- 安装Cmake v3.15或更高的版本
- NET SDK V6.0 或以上
- 安装VS2022
- 在Windows上,必须启用对长文件路径的支持
- 安装nasm
- 需要访问GitHub,这里我将关键的包下好了,至于编译后的得需要大家手动搞得,毕竟net、cmake之类的版本差一点项目就可能不通用(以自身的项目环境为准)。
基本命令行:
进入D盘:cd /d d:
清空当前内容:cls
二、下载工程及源码
1、unity工程
git clone --recurse-submodules https://github.com/CesiumGS/cesium-unity-samples.git
2、包
进入Packages进行下载,一般来说会有三个扩展文件下载失败
git clone --recurse-submodules https://github.com/CesiumGS/cesium-unity.git
com.cesium.unity
3、手动下载失败资源
下载扩展资源下的三个文件夹,放入cesium-unity-samples\Packages\com.cesium.unity\native~\extern
这里在国内下载很容易出错,手动下又太麻烦,我会整理资源上传网盘,需要的可以问我要。 但我的版本肯定不是最新版,所以大家能自己搞定最好自己搞。
三、源码编译
1、中间插件(c#-c++)
进入com.cesium.com输入以下命令插件安装,会有3个extern下的资源下载失败,如果报错过多可能是网络问题。
dotnet publish Reinterop~ -o .
2、unity编译
使用2021.3.10以上打开进行编译,我这里使用的是2021.3.16f1
3、cmake
生成vs解决方案(也就是有sln的项目)
cmake -B build -S . -G "Visual Studio 17 2022" -DCMAKE_BUILD_TYPE=Debug
成功
4、修改源码
进入目录D:/cesium-project/cesium-unity-samples/Packages/com.cesium.unity/native~/build用vs2022打开sln文件
5、编译解决方案
选中项目总体生成解决方案(快捷键ctrl+shift+b)
进入目录D:/cesium-project/cesium-unity-samples/Packages/com.cesium.unity/Editor,将上图两个dll放入,最后打开unity查看场景是否正确。
四、简化流程
编译三步
cd D:/cesium-project/cesium-unity-samples/Packages/com.cesium.unity/native~
cmake -B build -S . -G "Visual Studio 17 2022" -DCMAKE_BUILD_TYPE=RelWithDebInfo
cmake --build build -j14 --target install --config RelWithDebInfo
如果已经生成sln文件,那以后只需要执行以下代码进行快速编译,dll文件也会直接生成并覆盖到cesium-unity-samples\Packages\com.cesium.unity\Editor文件夹下。
cd D:/cesium-project/cesium-unity-samples/Packages/com.cesium.unity/native~
cmake --build build -j14 --target install --config RelWithDebInfo
总结
本文实现了Unity Cesium的源码编译过程。有细心的开发者可能发现官方文档还有封装Cesium的步骤,这个贴下下面就不做演示了。