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+
|