GDAL(Geospatial Data Abstraction Library)是处理地理信息时很常用的一个开源库,功能强大,支持数据格式非常广泛。Unity是个很流行的三维游戏引擎,在地理信息行业做空间数据可视化也是个非常棒的工具。在实际工作中遇到的一个问题就是,怎么在Unity中引入GDAL的库,从而使用GDAL提供的API以及强大的功能。
Unity开发使用的是C#语言,基于开源的.NET框架Mono。Unity中目前能使用的.NET库的版本是2.0/3.5,运行时甚至是2.0。因此,在引入外部插件或者开发动态库的时候,一定要选择Unity能兼容的目标框架,如下图所示。
![](https://img.haomeiwen.com/i2772495/1a08cd7640afa208.png)
查看运行时版本信息的代码是:
Debug.Log(System.Environment.Version);
或者
using System;
using System.Reflection;
Type type = Type.GetType("Mono.Runtime");
if (type != null) {
MethodInfo displayName = type.GetMethod("GetDisplayName", BindingFlags.NonPublic | BindingFlags.Static);
if (displayName != null)
Debug.Log(displayName.Invoke(null, null));
}
GDAL本身是C++实现的,经过不同的接口封装,出现了Python版本、C#版本等等。在选择GDAL库的时候,使用别人编译好的版本即可,省的自己再去折腾,但是由于版本问题,只能选择使用MSVC 2008(最高.NET 3.5)所编译的动态库,下载地址在这里:http://www.gisinternals.com/query.html?content=filelist&file=release-1500-x64-gdal-1-11-4-mapserver-6-4-3.zip
使用的时候注意,把GDAL相关的CSharp封装库(Managed DLL)放到Unity工程下面的Asset/Plugins文件夹下面,这样VS2015在启动的时候,会在CSharp工程中引用。
![](https://img.haomeiwen.com/i2772495/f787e8f052b2fd36.png)
其他的dll文件(Native DLL)要保证在环境变量中,运行时搜索依赖的时候才能找得到。
![](https://img.haomeiwen.com/i2772495/9c23b9e75056a793.png)
参考
1.http://answers.unity3d.com/questions/924021/what-is-the-version-of-net-in-unity-5.html
2.https://docs.unity3d.com/Manual/UsingDLL.html
网友评论