【转载】UE4 读取 csv 文件

716 阅读2分钟

本文转自:UE4 读取 csv 文件

正文

官方文档链接:docs.unrealengine.com/latest/CHN/…

略懒,稍微麻烦重复的工作,总希望能找人帮忙一起做,但是有人对于稍微一点点的规则他都理解不了(主要也是懒,不想做),于是我从 xml 来到了 csv 文件,csv 文件可以从 Excel 文件中导出,也可以在 Excel 里面编辑,于是帮忙的人也就是需要在 Excel 里面填入数据即可。

  1. 我定义了这么一张简单的表格,这里的中文才是后面有坑的地方

  1. 需要在 UE4 定义对应的数据格式,这里提供两种方式

     a. 蓝图定义数据结构
    

    b. C++ 定义数据结构, 记得数据结构名称 F 开头, 编译:
 /** Example Data */  
 USTRUCT(BlueprintType)  
 struct FExampleData : public FTableRowBase  
 {  
     GENERATED_USTRUCT_BODY()  
   
 public:  
   
     /** Name */  
     UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = ExampleData)  
     FString Name;  
   
     /** Age */  
     UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = ExampleData)  
     int32 Age;  
   
     FExampleData()  
     {  
         Age = 0;  
     }  
 }; 
  1. 将 Excel 另存为 .csv 并用 Notepad++ 或者记事本将其转为 utf-8 的编码格式,否则导入 UE4 后会是乱码,将 .csv 文件拖入 UE4 中,它会要求你选择一种数据格式,拉开选项就有开始我们定义的两个选项,一个BP_StructExample , 一个 ExampleData ,因为定义的一样的格式,这里选择谁都可以。

我这里选择 C++ 定义的结构,方便后面在 C++ 中直接调用数据(蓝图一样的)。

  1. 调用数据:
FExampleData* _ExampleData = Example->FindRow<FExampleData>("002""data002");  
GEngine->AddOnScreenDebugMessage(-110.0f, FColor::Red, _ExampleData->Name+ FString::FromInt(_ExampleData->Age)); 
  1. 运行结果:

  1. 假如我们最开始的 Excel 不见了,又需要其他人帮忙更改数据,我们就需要再将 UE4 的数据导出为 csv

  1. 然后你用 Excel 打开 csv ,你就会发现它所有数据都在第一格,或者乱码了,这里我们需要将它的编码如上改为 ANSI ,再用 Excel 打开就可以正常编辑了。