105 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			105 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # UE头文件解析工具使用示例
 | ||
| 
 | ||
| ## 基本用法
 | ||
| 
 | ||
| ### 扫描整个项目
 | ||
| ```bash
 | ||
| python Tools/ue_header_parser.py Source/BusyRabbit/Public -o Content/Lua/@types
 | ||
| ```
 | ||
| 
 | ||
| ### 扫描特定目录
 | ||
| ```bash
 | ||
| # 扫描Components目录
 | ||
| python Tools/ue_header_parser.py Source/BusyRabbit/Public/Components -o Content/Lua/@types
 | ||
| 
 | ||
| # 扫描Level目录
 | ||
| python Tools/ue_header_parser.py Source/BusyRabbit/Public/Level -o Content/Lua/@types
 | ||
| ```
 | ||
| 
 | ||
| ### 扫描单个文件
 | ||
| ```bash
 | ||
| # 直接指定文件路径(需要先确保输出目录存在)
 | ||
| python Tools/ue_header_parser.py Source/BusyRabbit/Public/Components/InventoryComponent.h -o Content/Lua/@types
 | ||
| ```
 | ||
| 
 | ||
| ## 生成结果示例
 | ||
| 
 | ||
| ### 输入头文件 (InventoryComponent.h)
 | ||
| ```cpp
 | ||
| USTRUCT(BlueprintType)
 | ||
| struct FInventoryGrid {
 | ||
|     GENERATED_BODY()
 | ||
| public:
 | ||
|     UPROPERTY(BlueprintReadOnly, DisplayName = "物品ID")
 | ||
|     int32 ItemID;
 | ||
| 
 | ||
|     UPROPERTY(BlueprintReadWrite, DisplayName = "当前的数量")
 | ||
|     int32 CurrentCount;
 | ||
| 
 | ||
|     UPROPERTY(BlueprintReadWrite, DisplayName = "最大堆叠限制")
 | ||
|     int32 MaxCount;
 | ||
| 
 | ||
|     UPROPERTY(BlueprintReadWrite, DisplayName = "优先级")
 | ||
|     int32 Priority;
 | ||
| };
 | ||
| 
 | ||
| UCLASS()
 | ||
| class BUSYRABBIT_API UInventoryComponent : public ULuaActorComponent {
 | ||
|     GENERATED_BODY()
 | ||
| public:
 | ||
|     UFUNCTION(BlueprintCallable)
 | ||
|     bool IsCanContain(int32 ItemID, int32 Count);
 | ||
|     
 | ||
|     // ... 其他函数和属性
 | ||
| };
 | ||
| ```
 | ||
| 
 | ||
| ### 输出注解文件 (InventoryComponent.d.lua)
 | ||
| ```lua
 | ||
| -- 自动生成的emmy-lua注解文件
 | ||
| -- 源文件: Source/BusyRabbit/Public/Components\InventoryComponent.h
 | ||
| 
 | ||
| ---@class FInventoryGrid
 | ||
| ---@field ItemID integer
 | ||
| ---@field CurrentCount integer
 | ||
| ---@field MaxCount integer
 | ||
| ---@field Priority integer
 | ||
| local FInventoryGrid = {}
 | ||
| 
 | ||
| ---@class UInventoryComponent : ULuaActorComponent
 | ||
| ---@field Capacity integer
 | ||
| ---@field InventoryList table<any>
 | ||
| ---@param ItemID integer
 | ||
| ---@param Count integer
 | ||
| ---@return boolean
 | ||
| function UInventoryComponent:IsCanContain(ItemID, Count) end
 | ||
| 
 | ||
| -- ... 其他函数注解
 | ||
| ```
 | ||
| 
 | ||
| ## 集成到开发流程
 | ||
| 
 | ||
| ### 1. 定期生成注解
 | ||
| 建议在每次UE头文件更新后运行工具重新生成注解。
 | ||
| 
 | ||
| ### 2. 版本控制
 | ||
| 将生成的`.d.lua`文件添加到版本控制中,方便团队共享。
 | ||
| 
 | ||
| ### 3. IDE配置
 | ||
| 确保IDE(如VSCode)能够识别`Content/Lua/@types`目录中的注解文件。
 | ||
| 
 | ||
| ## 注意事项
 | ||
| 
 | ||
| 1. **类型映射**: 工具会自动将C++类型映射到Lua类型
 | ||
| 2. **模板类型**: 支持`TArray<FInventoryGrid>`等模板类型的解析
 | ||
| 3. **委托支持**: 自动生成委托类型的Call函数注解
 | ||
| 4. **错误处理**: 工具会跳过无法解析的文件并继续处理其他文件
 | ||
| 
 | ||
| ## 故障排除
 | ||
| 
 | ||
| 如果遇到问题,请检查:
 | ||
| - 头文件语法是否正确
 | ||
| - UE宏格式是否符合标准
 | ||
| - 输出目录权限是否足够
 | ||
| - Python版本是否为3.6+
 |