update template

This commit is contained in:
codetypes committed 2024-06-09 08:14:08 +08:00
1 parent e6483f7743
commit 0635c15d71
2 files changed
+297 -53

No files matched your search

+223 -52
View File
@@ -2,14 +2,233 @@
{ {
"name": "AlwaysFail", "name": "AlwaysFail",
"type": "Decorator", "type": "Decorator",
"doc": "+ 只能有一个子节点,多个仅执行第一个\n+ 不管子节点是否成功都返回失败\n", "desc": "始终返回失败",
"desc": "始终返回失败" "doc": "+ 只能有一个子节点,多个仅执行第一个\n+ 不管子节点是否成功都返回「失败」"
}, },
{ {
"name": "AlwaysSuccess", "name": "AlwaysSuccess",
"type": "Decorator", "type": "Decorator",
"doc": "+ 只能有一个子节点,多个仅执行第一个\n+ 不管子节点是否成功都返回成功\n", "desc": "始终返回成功",
"desc": "始终返回成功" "doc": "+ 只能有一个子节点,多个仅执行第一个\n+ 不管子节点是否成功都返回「成功」"
},
{
"name": "Check",
"type": "Condition",
"desc": "检查True或False",
"args": [
{
"name": "value",
"type": "code",
"desc": "值"
}
],
"doc": "+ 做简单数值公式判定,返回「成功」或「失败」"
},
{
"name": "Clear",
"type": "Action",
"desc": "清除变量",
"output": [
"清除的变量名"
]
},
{
"name": "ForEach",
"type": "Composite",
"desc": "遍历数组",
"input": [
"数组"
],
"output": [
"变量"
],
"doc": "+ 每次执行子节点前会设置当前遍历到的变量\n+ 会执行所有子节点\n+ 永远返回「成功」/「运行中」"
},
{
"name": "Inverter",
"type": "Decorator",
"desc": "反转子节点运行结果",
"doc": "+ 只能有一个子节点,多个仅执行第一个\n+ 当子节点返回「成功」时返回「失败」\n+ 当子节点返回「失败」时返回「成功」\n+ 其余返回「运行中」"
},
{
"name": "IsNull",
"type": "Condition",
"desc": "判断变量是否不存在",
"input": [
"判断的变量"
]
},
{
"name": "Listen",
"type": "Decorator",
"desc": "侦听行为树事件",
"args": [
{
"name": "builtin",
"type": "enum",
"desc": "事件",
"options": [
{
"name": "行为树被中断",
"value": "interrupted"
},
{
"name": "行为树开始执行前",
"value": "beforeRun"
},
{
"name": "行为树执行完成后",
"value": "afterRun"
},
{
"name": "行为树执行成功后",
"value": "afterRunSuccess"
},
{
"name": "行为树执行失败后",
"value": "afterRunFailure"
}
]
},
{
"name": "event",
"type": "string?",
"desc": "自定义事件"
}
],
"doc": "+ 当事件触发时,执行第一个子节点,多个仅执行第一个\n+ 如果子节点返回 「运行中」,会中断执行并清理执行栈"
},
{
"name": "Log",
"type": "Action",
"desc": "打印日志",
"args": [
{
"name": "message",
"type": "string",
"desc": "日志"
}
]
},
{
"name": "Loop",
"type": "Composite",
"desc": "循环执行",
"input": [
"循环次数?"
],
"args": [
{
"name": "count",
"type": "int",
"desc": "循环次数"
}
]
},
{
"name": "NotNull",
"type": "Condition",
"desc": "判断变量是否存在",
"input": [
"判断的变量"
]
},
{
"name": "Now",
"type": "Action",
"desc": "获取当前时间",
"output": [
"当前时间"
]
},
{
"name": "Once",
"type": "Decorator",
"desc": "只执行一次",
"doc": "+ 只能有一个子节点,多个仅执行第一个\n+ 被打断后该节点后的子节点依旧不会执行\n+ 该节点执行后永远返回「成功」"
},
{
"name": "Parallel",
"type": "Composite",
"desc": "并行执行",
"doc": "执行所有子节点并返回「成功」/「运行中」"
},
{
"name": "RepeatUntilFailure",
"type": "Decorator",
"desc": "一直尝试直到子节点返回失败",
"input": [
"最大循环次数?"
],
"args": [
{
"name": "maxLoop",
"type": "int?",
"desc": "最大循环次数"
}
],
"doc": "+ 只能有一个子节点,多个仅执行第一个\n+ 只有当子节点返回「失败」时,才返回「成功」,其它情况返回「运行中」状态\n+ 如果设定了尝试次数,超过指定次数则返回「失败」"
},
{
"name": "RepeatUntilSuccess",
"type": "Decorator",
"desc": "一直尝试直到子节点返回成功",
"input": [
"最大循环次数?"
],
"args": [
{
"name": "maxLoop",
"type": "int?",
"desc": "最大循环次数"
}
],
"doc": "+ 只能有一个子节点,多个仅执行第一个\n+ 只有当子节点返回「成功」时,才返回「成功」,其它情况返回「运行中」状态\n+ 如果设定了尝试次数,超过指定次数则返回「失败」"
},
{
"name": "Selector",
"type": "Composite",
"desc": "选择执行",
"doc": "+ 一直往下执行,有子节点返回「成功」则返回「成功」\n+ 若全部节点返回「失败」则返回「失败」\n+ 子节点是或 (OR) 的关系"
},
{
"name": "Sequence",
"type": "Composite",
"desc": "顺序执行",
"doc": "+ 一直往下执行,只有当所有子节点都返回「成功」, 才返回「成功」\n+ 子节点是与(AND)的关系"
},
{
"name": "Timeout",
"type": "Decorator",
"desc": "超时",
"args": [
{
"name": "time",
"type": "float",
"desc": "超时时间"
}
],
"doc": "+ 只能有一个子节点,多个仅执行第一个\n+ 当子节点执行超时或返回「失败」时,返回「失败」\n+ 其余情况返回子节点的执行状态\n"
},
{
"name": "Wait",
"type": "Action",
"desc": "等待",
"input": [
"等待时间?"
],
"args": [
{
"name": "time",
"type": "float",
"desc": "等待时间"
},
{
"name": "random",
"type": "float?",
"desc": "随机范围"
}
]
}, },
{ {
"name": "Attack", "name": "Attack",
@@ -110,18 +329,6 @@
"type": "Action", "type": "Action",
"desc": "待机" "desc": "待机"
}, },
{
"name": "Log",
"type": "Action",
"args": [
{
"name": "str",
"desc": "日志",
"type": "string"
}
],
"desc": "打印日志"
},
{ {
"name": "MoveToPos", "name": "MoveToPos",
"type": "Action (Client)", "type": "Action (Client)",
@@ -147,42 +354,6 @@
], ],
"desc": "移动到目标" "desc": "移动到目标"
}, },
{
"name": "Not",
"type": "Decorator",
"doc": "+ 将子节点的返回值取反\n",
"desc": "取反"
},
{
"name": "Parallel",
"type": "Composite",
"doc": "执行所有子节点并返回成功\n",
"desc": "并行执行"
},
{
"name": "Selector",
"type": "Composite",
"doc": "+ 一直往下执行,有子节点返回成功则返回成功,若全部节点返回失败则返回失败\n+ 子节点是或的关系\n",
"desc": "选择执行"
},
{
"name": "Sequence",
"type": "Composite",
"doc": "+ 一直往下执行,有子节点返回成功则返回成功,若全部节点返回失败则返回失败\n+ 子节点是或的关系\n",
"desc": "顺序执行"
},
{
"name": "Wait",
"type": "Action",
"args": [
{
"name": "time",
"desc": "时间/tick",
"type": "int"
}
],
"desc": "等待"
},
{ {
"name": "TestB3", "name": "TestB3",
"type": "Action", "type": "Action",
+74 -1
View File
@@ -247,7 +247,7 @@ namespace zh {
type: "Decorator", type: "Decorator",
desc: "只执行一次", desc: "只执行一次",
doc: ` doc: `
+ 可以接多个子节点,子节点默认全部执行 + 只能有一个子节点,多个仅执行第一个
+ 被打断后该节点后的子节点依旧不会执行 + 被打断后该节点后的子节点依旧不会执行
+ 该节点执行后永远返回「成功」`, + 该节点执行后永远返回「成功」`,
}; };
@@ -284,6 +284,77 @@ namespace zh {
}; };
} }
} }
export class Timeout extends Process {
override get descriptor(): NodeDef {
return {
name: "Timeout",
type: "Decorator",
desc: "超时",
args: [{ name: "time", type: "float", desc: "超时时间" }],
doc: `
+ 只能有一个子节点,多个仅执行第一个
+ 当子节点执行超时或返回「失败」时,返回「失败」
+ 其余情况返回子节点的执行状态
`,
};
}
}
const enum TreeEvent {
INTERRUPTED = "interrupted",
BEFORE_RUN = "beforeRun",
AFTER_RUN = "afterRun",
AFTER_RUN_SUCCESS = "afterRunSuccess",
AFTER_RUN_FAILURE = "afterRunFailure",
}
export class Listen extends Process {
override get descriptor(): NodeDef {
return {
name: "Listen",
type: "Decorator",
desc: "侦听行为树事件",
args: [
{
name: "builtin",
type: "enum",
desc: "事件",
options: [
{
name: "行为树被中断",
value: TreeEvent.INTERRUPTED,
},
{
name: "行为树开始执行前",
value: TreeEvent.BEFORE_RUN,
},
{
name: "行为树执行完成后",
value: TreeEvent.AFTER_RUN,
},
{
name: "行为树执行成功后",
value: TreeEvent.AFTER_RUN_SUCCESS,
},
{
name: "行为树执行失败后",
value: TreeEvent.AFTER_RUN_FAILURE,
},
],
},
{
name: "event",
type: "string?",
desc: "自定义事件",
},
],
doc: `
+ 当事件触发时,执行第一个子节点,多个仅执行第一个
+ 如果子节点返回 「运行中」,会中断执行并清理执行栈`,
};
}
}
} }
} }
@@ -319,5 +390,7 @@ export const zhNodeDef = () => {
zh.decorator.Once, zh.decorator.Once,
zh.decorator.RepeatUntilFailure, zh.decorator.RepeatUntilFailure,
zh.decorator.RepeatUntilSuccess, zh.decorator.RepeatUntilSuccess,
zh.decorator.Timeout,
zh.decorator.Listen,
]); ]);
}; };