第 3-5 关
🗺️ 游戏开发 2
📋

标准操作规程 (SOP)

Standard Operating Procedure

🎯 锁定目标
📜 执行命令
🚒

什么是“标准操作规程” (SOP)?

在现实中,SOP 是一套标准的行动步骤
👨‍🚒 消防员 SOP: 接警 → 穿衣 → 上车 → 出发。
👨‍⚕️ 医生 SOP: 检查呼吸 → 量血压 → 输液。

游戏代码里的 SOP:
"所有士兵一出生,就按照【这套步骤】行动!"
📜
⬇️
👮‍♂️👮‍♂️👮‍♂️
一份说明书,全员执行
🎯

SOP 第一步:锁定主角

谁来执行这个规程?我们要先找到他。

auto fightEnemies(auto event) { // event.target 是这次事件的"主角" auto unit = event.target; // 以后都叫他 unit (单位) unit.attack(enemy); }

就像老师点名:“这次轮到小明,大家看小明做示范。”

+
🤠
unit = event.target
⚔️

SOP 示例一:战斗

auto fightEnemies(auto event) { auto unit = event.target; // 1. 确认是谁 while(true) { // 2. 一直做 auto enemy = unit.findNearestEnemy(); if(enemy) { // 3. 有怪就打 unit.attack(enemy); } } }

翻译成白话就是:
“认领任务 → 只要活着 → 找敌人 → 砍他!”

1. 锁定 unit
⬇️
2. 寻找敌人
⬇️
3. 攻击 enemy
🔄 循环
🔥

SOP 示例二:集合

有时候不需要一直打仗,只需要走到指定位置。

auto centerFormation(auto event) { auto unit = event.target; // 所有人去篝火旁集合! unit.moveXY(40, 36); }
配合命令:
game.setActionFor("soldier", "spawn", centerFormation);
🔥
🏃
🏃
🛡️

SOP 示例三:守卫林道

这个 SOP 多了一步:记住家在哪

auto defendLane(auto event) { auto unit = event.target; // 1. 记下出生点 X 坐标 auto startX = unit.pos.x; while(true) { auto enemy = unit.findNearestEnemy(); if(enemy) { unit.attack(enemy); } else { // 2. 没敌人就回家 unit.moveXY(startX, 16); } } }
🏠
👮
👾
📣

全军出击:setActionFor

写好了 SOP,怎么发给所有人?

game.setActionFor("soldier", "spawn", fightEnemies);

这句话的意思是:
“游戏请注意:当士兵发生出生事件时,自动执行 fightEnemies 这个 SOP。”

从此你就是给全军制定规则的总指挥官!
📣
👮‍♂️👮‍♂️👮‍♂️

"收到!执行 SOP!"

📐

SOP 万能模板

以后写事件处理,直接套用这个模板:

auto myHandler(auto event) { // 1. 认领主角 auto unit = event.target; // 2. 记录初始信息 (可选) // auto startX = unit.pos.x; // 3. 死循环干活 while(true) { // 你的逻辑... } }
🛠️
万能工具箱
🏆

指挥官口诀

"先看是谁来执行 (unit),
再记家在哪 (startX),
大脑一直转 (while true),
有怪打怪,没怪回家!"
最后别忘发命令:
game.setActionFor!
🎖️