指令参数解析工具

概述

BlueprintConsoleCommandParser 是一个强大的参数解析工具,帮助您轻松解析和转换控制台命令参数为各种数据类型。

功能特性

多种数据类型支持: Int, Float, Bool, String, Vector, Rotator ✅ 智能类型转换: 自动验证和转换数据类型 ✅ 命名参数: 支持 key=value 格式 ✅ 引号支持: 正确处理带空格的字符串 ✅ 默认值: 所有函数都支持默认值 ✅ 批量解析: 一次性解析多个参数


基础用法(步进指南)

1

解析单个参数

获取字符串参数

蓝图节点流程:
Parameters (String) → Get Parameter (Index: 0) → Result (String)

示例:
输入: "hello world test"
Index: 0"hello"
Index: 1"world"
Index: 2"test"

获取整数参数

Parameters → Get Parameter As Int (Index: 0, Default: 0) → Result (Int)

示例:
输入: "123 456 789"
Index: 0123
Index: 1456
Index: 2789

获取浮点数参数

Parameters → Get Parameter As Float (Index: 0, Default: 0.0) → Result (Float)

示例:
输入: "3.14 2.5 100.5"
Index: 03.14
Index: 12.5
Index: 2100.5

获取布尔值参数

Parameters → Get Parameter As Bool (Index: 0, Default: false) → Result (Bool)

支持的格式:
true/false → True/False
1/0 → True/False
yes/no → True/False
on/off → True/False

示例:
输入: "true yes 1 on"
Index: 0true
Index: 1true
Index: 2true
Index: 3true
2

解析向量和旋转

向量 - 逗号分隔格式

Parameters → Get Parameter As Vector (Start Index: 0) → Result (Vector)

示例:
输入: "100,200,300"
结果: Vector(100, 200, 300)

向量 - 空格分隔格式

示例:
输入: "100 200 300"
结果: Vector(100, 200, 300)

旋转器

Parameters → Get Parameter As Rotator (Start Index: 0) → Result (Rotator)

示例:
输入: "90,45,0"
结果: Rotator(Pitch=90, Yaw=45, Roll=0)

输入: "90 45 0"
结果: Rotator(Pitch=90, Yaw=45, Roll=0)
3

批量解析

获取所有整数参数

Parameters → Get All Parameters As Int → Result (Array<Int>)

示例:
输入: "10 20 30 40 50"
结果: [10, 20, 30, 40, 50]

获取所有浮点数参数

Parameters → Get All Parameters As Float → Result (Array<Float>)

示例:
输入: "1.5 2.5 3.5"
结果: [1.5, 2.5, 3.5]
4

命名参数

解析命名参数

Parameters → Parse Named Parameters → Result (Map<String, String>)

示例:
输入: "name=Player health=100 speed=5.5 active=true"
结果:
{
  "name": "Player",
  "health": "100",
  "speed": "5.5",
  "active": "true"
}

获取命名参数值

Named Parameters → Get Named Parameter (Key: "name") → Result (String)

示例:
输入参数: name=Player health=100
Key: "name""Player"
Key: "health""100"

获取命名参数为整数

Named Parameters → Get Named Parameter As Int (Key: "health", Default: 100) → Result (Int)

示例:
输入参数: health=150 level=5
Key: "health"150
Key: "level"5

完整蓝图示例(示例集合)

1

示例 1: 传送玩家命令

命令格式: teleport x y z
例如: teleport 100 200 300

蓝图流程:
[Event] Callback_BPCommandSystem (Parameters)

[Get Parameter As Vector] (Parameters, Start Index: 0)

[Get Player Character]

[Set Actor Location] (Target: Player, New Location: Vector)
2

示例 2: 设置玩家属性命令

命令格式: setprop health=100 speed=5.5 name="John Doe"
例如: setprop health=150 speed=6.0 name=Player1

蓝图流程:
[Event] Callback_BPCommandSystem (Parameters)

[Parse Named Parameters] (Parameters)

├─ [Get Named Parameter As Int] (Key: "health") → Set Health
├─ [Get Named Parameter As Float] (Key: "speed") → Set Speed
└─ [Get Named Parameter] (Key: "name") → Set Name
3

示例 3: 生成道具命令

命令格式: spawn item_name count x y z
例如: spawn Sword 5 100 200 300

蓝图流程:
[Event] Callback_BPCommandSystem (Parameters)

├─ [Get Parameter] (Index: 0) → Item Name (String)
├─ [Get Parameter As Int] (Index: 1, Default: 1) → Count (Int)
└─ [Get Parameter As Vector] (Start Index: 2) → Location (Vector)

[Spawn Item] (Item Name, Count, Location)
4

示例 4: 多参数验证

命令格式: 111 10 20 30 40 50
处理多个整数参数

蓝图流程:
[Event] Callback_BPCommandSystem (CommandName: "111", Parameters)

[Get All Parameters As Int] (Parameters)

[For Each Loop]

[Print String] (Array Element)

结果: 依次打印 10, 20, 30, 40, 50

实用工具函数

参数数量

Get Parameter Count (Parameters) → Count (Int)

示例:
输入: "one two three"
结果: 3

分割参数

Split Parameters (Parameters, Delimiter: " ") → Array (Array<String>)

示例:
输入: "param1 param2 param3"
结果: ["param1", "param2", "param3"]

移除引号

Remove Quotes (Parameter) → Result (String)

示例:
输入: '"Hello World"'
结果: "Hello World"

验证函数

Is Valid Int (Parameter) → Result (Bool)
Is Valid Float (Parameter) → Result (Bool)
Is Valid Bool (Parameter) → Result (Bool)

示例:
"123" → IsValidInt = true
"abc" → IsValidInt = false
"3.14" → IsValidFloat = true
"true" → IsValidBool = true

错误处理

所有解析函数都支持默认值,当参数无效或不存在时返回默认值:

Get Parameter As Int (Index: 999, Default: -1) → -1
Get Parameter As Float (Index: 999, Default: 0.0) → 0.0
Get Parameter As Bool (Index: 999, Default: false) → false

性能优化建议

  1. 缓存解析结果: 如果需要多次使用同一参数,先解析并存储

  2. 使用批量函数: 需要所有参数时使用 Get All Parameters As Int/Float

  3. 验证参数: 使用 Is Valid 函数先验证再解析


常见使用场景

1

场景 1: GM命令 - 给予物品

命令: giveitem ItemID Count
控制台: giveitem 1001 50

蓝图:
- Get Parameter As Int (Index: 0) → Item ID
- Get Parameter As Int (Index: 1, Default: 1) → Count
- GiveItem(ItemID, Count)
2

场景 2: 调试命令 - 设置时间

命令: settime hour minute
控制台: settime 12 30

蓝图:
- Get Parameter As Int (Index: 0, Default: 12) → Hour
- Get Parameter As Int (Index: 1, Default: 0) → Minute
- SetTime(Hour, Minute)
3

场景 3: 测试命令 - 批量生成

命令: spawnmultiple count x,y,z
控制台: spawnmultiple 10 100,200,300

蓝图:
- Get Parameter As Int (Index: 0) → Count
- Get Parameter As Vector (Start Index: 1) → Location
- For Loop (Count times) → SpawnActor(Location)

API 速查表

函数名
输入
输出
说明

Get Parameter

Index, Default

String

获取字符串参数

Get Parameter As Int

Index, Default

Int

获取整数参数

Get Parameter As Float

Index, Default

Float

获取浮点数参数

Get Parameter As Bool

Index, Default

Bool

获取布尔值参数

Get Parameter As Vector

Start Index, Default

Vector

获取向量参数

Get Parameter As Rotator

Start Index, Default

Rotator

获取旋转参数

Get All Parameters As Int

-

Array

获取所有整数

Get All Parameters As Float

-

Array

获取所有浮点数

Parse Named Parameters

-

Map<String,String>

解析命名参数

Get Named Parameter

Key, Default

String

获取命名参数值

Split Parameters

Delimiter

Array

分割参数

Get Parameter Count

-

Int

获取参数数量


总结

使用 BlueprintConsoleCommandParser 可以:

✅ 大幅简化参数解析代码 ✅ 自动处理类型转换 ✅ 支持复杂的参数格式 ✅ 提供完善的错误处理 ✅ 提升开发效率和代码可读性

现在您可以专注于实现命令逻辑,而不是处理繁琐的字符串解析!🎉