Unity实现俄罗斯方块
Demo:
使用方法:
- 安卓手机: 直接点击游戏界面按钮
- Editor: 直接点击play
开发环境:
Unity2018.1
部分实现介绍
UI界面使用的MVC架构
View层负责响应用户事件和页面显示, Controller层负责响应游戏逻辑和作为View层和Model层的介质. View层通过发送消息来获取Model层的状态信息.
消息机制
项目中实现了一个事件管理器EventManager
, 负责事件的监听和派发. Controller层负责事件的监听以及响应.
EventManager
中设置了一个字典来存放事件内容
private readonly Dictionary<UIEvent, List<BaseEvent>> mEventDictionary = new Dictionary<UIEvent, List<BaseEvent>>();
两个接口分别提供监听和激发事件
public void Listen(UIEvent uiEvent, Action<object> listenerAction, Action callerAction = null)
public void Fire(UIEvent uiEvent, object obj = null)
枚举来存放事件类型
public enum UIEvent {
ENTER_PLAY_STATE,
GET_SCORE_INFO,
GAME_PAUSE,
GAME_OVER,
CLEAR_DATA,
SET_MUIE,
REFRESH_SCORE,
SHOW_ALERT,
SHOW_DIFFICULITY_PANEL,
SHOW_DEFINED_PANEL,
CAMERA_SHAKE
}
UI面板切换的分类管理
ui面板的切换有两种需求, 情况如下
- 新窗口关闭时, 自动打开旧窗口
- 新窗口关闭时, 直接回到主界面
项目中使用一个自定义栈MyStack
来存储管理面板, UIComposi