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 模块中。