之前遇到了状态机问题,看了几个视频,现附上源码。
Unit = {
State = {}, --状态
Param = {}, --参数
}
Unit.State.Name = "" --写在代码前作为定义全局
-----------状态机
function ProcessState(processState,processStateTable,processStateParam)
if processState[processStateTable] ~= nil then
return processState[processStateTable](processStateParam)
end
return "Error"
end
-----------状态机主函数
function main()
Unit.State.Name = "Text"---初始状态
while true do --状态组 --状态名 --状态参数
Unit.State.Name = ProcessState(Unit.State, Unit.State.Name, Unit.Param[Unit.State.Name])
print("当前状态:"..Unit.State.Name)
end
end
Unit.Param.Text = {
}
function Unit.State.Text()
sleep(500)
return "Text"--这里尤为重要,使用状态机需要return任务本身。b站某松鼠视频里有讲到
end
main()
|