Files
BusyRabbit/Tools/使用示例.md
2025-09-24 13:57:17 +08:00

105 lines
2.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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