今天在项目中研究了下状态机 又问了同事 对状态机油有了更深的理解
突然想到之前Unity中主线程的UI界面的时候 比如说在线程 B 中修改了主线程 A 中的按钮上的文字 那么就会出错既然不让访问 那么就可以转移到主线程某个cs文件中Update中做手脚
比如:主线程A
Update()
{
if(1 == state)//state默认值是0
{
if(1 == actor)
修改按钮文字
if(2 == actor)
修改按钮颜色
if(3 == actor)
修改按钮大小
...
}
if(2 == state)//state默认值是0
{
if(1 == actor)
修改图片文字
if(2 == actor)
修改图片颜色
if(3 == actor)
修改图片大小
...
}
}
线程B
...
xx.state = 1;
...
这样就能够修改主线程的东西了
但是这样会出现问题
执行一个操作就要在这里创个状态变量 然后在update用来判断是否执行了该操作 多了的话很不好管理
在了解状态机之后 可以大概这么改 将每个状态分成几个模块 然后再判断动作 这样能避免状态多的时候不好管理的问题
(动作依然是这样判断 个人认为 动作可变性比较大 所以没有进行判断更改)
主线程A:
FSM.cs
enum State
{