简易状态机

SimpleFSM 包含状态切换以及事件驱动传递参数

下面的代码是登录的状态码

 1 using System;
 2 using UnityEngine;
 3 using System.Collections;
 4
 5 public class LoginState : SingletonPrivider<LoginState>, GameState
 6 {
 7     private delegate void LoginEventHandler(object sender, LoginEventArgs args);
 8     private event LoginEventHandler LoginEvent;
 9
10     public void Init()
11     {
12         Debug.Log("Init: LoginState");
13         LoginEvent += UILogin.Instance.GetLoginInfo;
14         Enter();
15     }
16
17     public void Enter()
18     {
19         Debug.Log("Enter: Login");
20         LoginEvent(this, new LoginEventArgs("冷雨夜", "123"));
21     }
22
23     public void Exit()
24     {
25         Debug.Log("Exit: LoginState");
26         LoginEvent -= UILogin.Instance.GetLoginInfo;
27     }
28
29     public GameState Previous()
30     {
31         return null;
32     }
33
34     public GameState Next()
35     {
36         Exit();
37         GameObject.Destroy(UILogin.Instance.gameObject);
38         LobbyState.Instance.Init();
39         return LobbyState.Instance;
40     }
41 }
42
43 public class LoginEventArgs : EventArgs
44 {
45     public string username;
46     public string password;
47
48     public LoginEventArgs(string username, string password)
49     {
50         this.username = username;
51         this.password = password;
52     }
53 }

demo在这里

希望给予留言并指正一二

简易状态机,布布扣,bubuko.com

时间: 2024-08-25 23:10:44

简易状态机的相关文章

一个简易状态机的实现

// Test.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <iostream> using namespace std; class CEventBase { virtual void dummy(){}; }; class CStateBase { public: virtual void next(CEventBase * e){}

基于状态机的简易RISC CPU设计

目录 一.什么是CPU? 二.RISC CPU结构 1.时钟发生器 2.指令寄存器 3.累加器 4.RISC CPU算术逻辑运算单元 5.数据控制器 6.状态控制器 7.程序计数器 8.地址多路器 9.外围模块 10.地址译码器 a.RAM b.ROM 三.RISC CPU中各部件的相互连接关系 四.RISC CPU和它的外围电路 五.RISC CPU的寻址方式和指令系统 六.RISC CPU的操作和时序 正文 一.什么是CPU? CPU 即中央处理单元的英文缩写,它是计算机的核心部件.计算机进

简易SDRAM控制器的verilog代码实现

SDRAM是每隔15us进行刷新一次,但是如果当SDRAM需要进行刷新时,而SDRAM正在写数据,这两个操作之间怎么进行协调呢? 需要保证写的数据不能丢失,所以,如果刷新的时间到了,先让写操作把正在写的4个数据(突发长度为4)写完,然后再去进行刷新操作: 而如果在执行读操作也遇到需要刷新的情况,也可以先让数据读完,再去执行刷新操作. 思路:SDRAM控制器包括初始化.读操作.写操作及自动刷新这些操作,给每一个操作写上一个模块独立开来,也便于我们每个模块的调试,显然这种思路是正确的: 虽然都是独立

Tinywebserver:一个简易的web服务器

这是学习网络编程后写的一个练手的小程序,可以帮助复习I/O模型,epoll使用,线程池,HTTP协议等内容. 程序代码是基于<Linux高性能服务器编程>一书编写的. 首先回顾程序中的核心内容和主要问题,最后给出相关代码. 0. 功能和I/O模型 实现简易的HTTP服务端,现仅支持GET方法,通过浏览器访问可以返回相应内容. I/O模型采用Reactor(I/O复用 + 非阻塞I/O) + 线程池. 使用epoll事件循环用作事件通知,如果listenfd上可读,则调用accept,把新建的f

一种简易版服务熔断设计

正常服务熔断的算法比较复杂,涉及到一个熔断机多个状态的切换,所以在具体项目里面应用往往需要经过大量的测试验证,下面是种简易的实现,但有以下缺点: 1 因为没有使用状态机,服务熔断之后无法自动恢复,只能在一个类似dubbo-admin的管理平台上去解除熔断 2 这种实现类似服务降级,只不过服务降级一般是手动触发,这个是自动触发

Android学习之路——简易版微信为例(二)

1 概述 从这篇博文开始,正式进入简易版微信的开发.深入学习前,想谈谈个人对Android程序开发一些理解,不一定正确,只是自己的一点想法.Android程序开发不像我们在大学时候写C控制台程序那样,需要从main开始写代码逻辑,大部分逻辑控制代码都由自己来实现.事实上,Android已经为我们提供了一个程序运行的框架,我们只需要往框架中填入我们所需的内容即可,这里的内容主要是:四大组件——Activity.Service.ContentProvider.BroadCast.在这四大组件中,可以

一个简易的web服务器:Tinywebserver

这是学习网络编程后写的一个练手的小程序,可以帮助复习I/O模型,epoll使用,线程池,HTTP协议等内容. 程序代码是基于<Linux高性能服务器编程>一书编写的. 首先回顾程序中的核心内容和主要问题,最后给出相关代码. 0. 功能和I/O模型 实现简易的HTTP服务端,现仅支持GET方法,通过浏览器访问可以返回相应内容. I/O模型采用Reactor(I/O复用 + 非阻塞I/O) + 线程池. 使用epoll事件循环用作事件通知,如果listenfd上可读,则调用accept,把新建的f

Android 开发第七弹:简易时钟(秒表)

本文承接,Android 开发第五弹:简易时钟(闹钟) 和 Android 开发第六弹:简易时钟(计时器),这一部分是关于秒表的. 布局 同样是新建一个类(StopWatchView)并扩展自LinearLayout,并将其用作布局. <myapplication.nomasp.com.clock.StopWatchView android : id = "@+id/tabStopWatch" android : layout_width = "match_parent

最简易无加密方式下的ppp拨号连接

PPP拨号连接建立虚拟网卡,并可以进行路由设置.几乎所有其他的连接服务都建立在其之上,PPPoE,PPTP,L2TP等等. 而其中一个最基本的话题可能被忽略了,PPP是如何工作的,如何使用PPP建立最简易的连接. PPP协议实际上非常简单,握手信号之后即进行数据交换,由于原来的PPP连接的使用都是基于电话MODEM的点对点通信,不考虑过于复杂的加密并保证传输效率,所以PPP的缺省设置是基于tty设备的,如果使用串口就是ttyS0-ttyS? 当然,使用pppd应用于附加服务并不必须使用tty设备