Choose your operating system:
Windows
macOS
Linux
可通过编写插件创建自定义导入地形数据的高度图和权重图格式。插件将把新格式添加到引擎,并从文件导入数据。
编写自定义导入器
为新建导入器,插件应创建对象实例实现
ILandscapeHeightmapFileFormat
和ILandscapeWeightmapFileFormat
,并相应以ILandscapeEditorModulemodule::RegisterHeightmapFileFormat
和ILandscapeEditorModulemodule::RegisterWeightmapFileFormat
注册这些对象。在函数中实现
ILandscapeHeightmapFileFormat
接口需要覆盖以下函数:const FLandscapeFileTypeInfo& GetInfo() const
:返回类型信息说明该类处理的文件类型,以及是否支持导出。FLandscapeHeightmapInfo Validate(const TCHAR* HeightmapFilename) const
- 验证命名文件,或将其驳回并返回一个错误代码和消息。FLandscapeHeightmapImportData Import(const TCHAR* HeightmapFilename, FLandscapeFileResolution ExpectedResolution) const
- 实际导入文件。void Export(const TCHAR* HeightmapFilename, TArrayView<const uint16> Data, FLandscapeFileResolution DataResolution, FVector Scale) const
- 如该格式支持导出,则导出文件(查看来自GetInfo
的返回值)。为进行编译,这是唯一一个不需要被覆盖的函数。然而,如它在未被覆盖的情况下覆盖,它将调用check
。(Destructor)
- 实现此接口的类应该使用虚拟析构函数,因为他们将通过指向接口类的指针进行删除。
实现
ILandscapeWeightmapFileFormat
接口几乎相同,只在部分返回类型上有细微差别:const FLandscapeFileTypeInfo& GetInfo() const
- 返回类型信息说明该类处理的文件类型,以及是否支持导出。FLandscapeWeightmapInfo Validate(const TCHAR* WeightmapFilename) const
- 验证命名文件,或将其驳回并返回一个错误代码和消息。FLandscapeWeightmapImportData Import(const TCHAR* WeightmapFilename, FLandscapeFileResolution ExpectedResolution) const
- 实际导入文件。void Export(const TCHAR* WeightmapFilename, TArrayView<const uint16> Data, FLandscapeFileResolution DataResolution, FVector Scale) const
- 如该格式支持导出,则导出文件(查看来自GetInfo
的返回值)。为进行编译,这是唯一一个不需要被覆盖的函数。然而,如它在未被覆盖的情况下覆盖,它将调用check
。(Destructor)
- 实现此接口的类应该使用虚拟析构函数,因为他们将通过指向接口类的指针进行删除。
可查看
LandscapeFileFormatInterfaces.h
中的接口、LandscapeFileFormatPng.cpp
和LandscapeFileFormatPng.h
中的 .PNG 实现,以及LandscapeFileFormatRaw.cpp
和LandscapeFileFormatRaw.h
中的 .RAW 实现,了解更多信息和范例。所有代码均在引擎的 LandscapeEditor 模块中。