unity3d mvvm c#
using UnityEngine;
using System.Collections; public interface IState {
void BeforEnter();
void BeforLeave();
} public interface ISceneState: IState { } public class GenFSM {
IState _state;
public GenFSM(IState state){
this._state = state;
this._state.BeforEnter();
} public void ChangeState(IState state){
this._state.BeforLeave();
this._state = state;
this._state.BeforEnter();
}
} namespace Scene {
public class Login: ISceneState {
// ui vm
public void BeforEnter(){
// uivm.Oncommand( show ui)
} public void BeforLeave(){ } public void OnLogin(){
//SceneViewModel.changeState(SceneViewModel.Game);
}
} public class Game: ISceneState {
// package vm HeroViewModel heroViewModel; public void BeforEnter(){
Application.LoadLevel();
this.heroViewModel = new HeroViewModel();
} public void BeforLeave(){ }
}
} public interface HeroCmd {
void UseSkill();
void AddBlood();
void Say();
} public class HeroViewModel: HeroCmd {
public HeroViewModel(){
var prefab = GameObject.Find ("hero") as GameObject;
prefab.AddComponent("HeroBehaviour");
HeroBehaviour inst = prefab.GetComponent<HeroBehaviour>();
inst.vm = this;
} public void OnCommand(string cmd){
Debug.Log("on command: " + cmd);
} public void UseSkill(){}
public void AddBlood(){}
public void Say(){}
} public class HeroBehaviour: MonoBehaviour { public HeroCmd vm; void Update(){
if(Input.anyKeyDown){
// animation
vm.UseSkill();
}
}
} public class UILoginViewModel {
Scene.Login _l;
public UILoginViewModel(Scene.Login L){
this._l = L;
var prefab = GameObject.Find ("login_ui") as GameObject;
prefab.AddComponent("UIClickBehaviour");
} void Login(){
this._l.OnLogin();
}
} public class SceneViewModel {
private Scene.Login _stateLogin;
private Scene.Login _stateGame; GenFSM scenefsm; public SceneViewModel(){
this._stateLogin = new Scene.Login();
this.scenefsm = new GenFSM(this._stateLogin);
} //command
public void ChangeState(ISceneState state){
scenefsm.ChangeState(state);
}
}
unity3d mvvm c#的更多相关文章
- 浅谈 MVVM 设计模式在 Unity3D 中的设计与实施
初识 MVVM 谈起 MVVM 设计模式,可能第一映像你会想到 WPF/Sliverlight,他们提供了的数据绑定(Data Binding),命令(Command)等功能,这让 MVVM 模式得到 ...
- Unity3D框架插件uFrame实践记录(一)
1.概览 uFrame是提供给Unity3D开发者使用的一个框架插件,它本身模仿了MVVM这种架构模式(事实上并不包含Model部分,且多出了Controller部分).因为用于Unity3D,所以它 ...
- Unity3d UGUI 通用Confirm确认对话框实现(Inventory Pro学习总结)
背景 曾几何时,在Winform中,使用MessageBox对话框是如此happy,后来还有人封装了可以选择各种图标和带隐藏详情的MessageBox,现在Unity3d UGui就没有了这样的好事情 ...
- Vue.js 和 MVVM 小细节
MVVM 是Model-View-ViewModel 的缩写,它是一种基于前端开发的架构模式,其核心是提供对View 和 ViewModel 的双向数据绑定,这使得ViewModel 的状态改变可以自 ...
- Unity3d学习 预设体(prefab)的一些理解
之前一直在想如果要在Unity3d上创建很多个具有相同结构的对象,是如何做的,后来查了相关资料发现预设体可以解决这个问题! 预设体的概念: 组件的集合体 , 预制物体可以实例化成游戏对象. 创建预设体 ...
- Unity3d入门 - 关于unity工具的熟悉
上周由于工作内容较多,花在unity上学习的时间不多,但总归还是学习了一些东西,内容如下: .1 根据相关的教程在mac上安装了unity. .2 学习了unity的主要的工具分布和对应工具的相关的功 ...
- 领域驱动和MVVM应用于UWP开发的一些思考
领域驱动和MVVM应用于UWP开发的一些思考 0x00 起因 有段时间没写博客了,其实最近本来是根据梳理的MSDN上的资料(UWP开发目录整理)有条不紊的进行UWP学习的.学习中有了心得体会或遇到了问 ...
- MVVM框架从WPF移植到UWP遇到的问题和解决方法
MVVM框架从WPF移植到UWP遇到的问题和解决方法 0x00 起因 这几天开始学习UWP了,之前有WPF经验,所以总体感觉还可以,看了一些基础概念和主题,写了几个测试程序,突然想起来了前一段时间在W ...
- MVVM模式解析和在WPF中的实现(六) 用依赖注入的方式配置ViewModel并注册消息
MVVM模式解析和在WPF中的实现(六) 用依赖注入的方式配置ViewModel并注册消息 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二 ...
随机推荐
- java 逻辑运算符 短路(条件操作)
两个数字计算时都会先把数字转换成二进制后再进行换算,二进制就是由0和1组成的数字 http://yxwang0615.iteye.com/blog/1084288
- Leetcode Array 11 Container With Most Water
题目: Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, a ...
- VS2010编译OpenSSL(两个版本)
第一个版本: 编译工具 VS2010 OpenSSL版本 openssl-1.0.0a 下载 OpenSSL http://www.openssl.org/ 下载 from http://www.ac ...
- npm常用命令(转)
npm install <name>安装nodejs的依赖包 例如npm install express 就会默认安装express的最新版本,也可以通过在后面加版本号的方式安装指定版本, ...
- 百度富文本编辑器Ueditor上传图片时标签中添加宽高
ueditor.all.js中:直接搜索callback() function callback(){ try{ var link, json, loader, body = (iframe.cont ...
- 深入Asyncio(六)Tasks and Futures
Tasks and Futures 大多数的工作只涉及到Task.create_task()方法,就像前面代码一样,Future是Task的父类,提供与loop交互的所有功能. Future对象表示某 ...
- linux find 根据条件查找文件
版权为个人所有,欢迎转载如转载请说明出处.(东北大亨) http://www.cnblogs.com/northeastTycoon/p/5513231.html 1. 实现说明 按照某一个时间点查找 ...
- __str__ 和 __unicode__ 的区别和用法
转自:https://www.cnblogs.com/painberg/p/8514860.html 简而言之,就是__str__和__unicode__都是为了再管理站点中加载这个表时想显示什么属性 ...
- href=http:// href=// 的区别,src=http:// src=// 的区别。 链接里不带http,链接里直接使用双斜线 // 有什么不同。http://和//有什么区别?
其实很简单,当一个连接用双斜线 // 开头时表示如果浏览器当前使用的是https协议,那么就加载https协议的脚本,否则使用http,这保证了页面所有资源使用同一协议. 其实是有人将其做为规范来实践 ...
- css 字体的unicode码
微软雅黑: YaHei宋体: SimSun黑体: SimHei ;