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#的更多相关文章

  1. 浅谈 MVVM 设计模式在 Unity3D 中的设计与实施

    初识 MVVM 谈起 MVVM 设计模式,可能第一映像你会想到 WPF/Sliverlight,他们提供了的数据绑定(Data Binding),命令(Command)等功能,这让 MVVM 模式得到 ...

  2. Unity3D框架插件uFrame实践记录(一)

    1.概览 uFrame是提供给Unity3D开发者使用的一个框架插件,它本身模仿了MVVM这种架构模式(事实上并不包含Model部分,且多出了Controller部分).因为用于Unity3D,所以它 ...

  3. Unity3d UGUI 通用Confirm确认对话框实现(Inventory Pro学习总结)

    背景 曾几何时,在Winform中,使用MessageBox对话框是如此happy,后来还有人封装了可以选择各种图标和带隐藏详情的MessageBox,现在Unity3d UGui就没有了这样的好事情 ...

  4. Vue.js 和 MVVM 小细节

    MVVM 是Model-View-ViewModel 的缩写,它是一种基于前端开发的架构模式,其核心是提供对View 和 ViewModel 的双向数据绑定,这使得ViewModel 的状态改变可以自 ...

  5. Unity3d学习 预设体(prefab)的一些理解

    之前一直在想如果要在Unity3d上创建很多个具有相同结构的对象,是如何做的,后来查了相关资料发现预设体可以解决这个问题! 预设体的概念: 组件的集合体 , 预制物体可以实例化成游戏对象. 创建预设体 ...

  6. Unity3d入门 - 关于unity工具的熟悉

    上周由于工作内容较多,花在unity上学习的时间不多,但总归还是学习了一些东西,内容如下: .1 根据相关的教程在mac上安装了unity. .2 学习了unity的主要的工具分布和对应工具的相关的功 ...

  7. 领域驱动和MVVM应用于UWP开发的一些思考

    领域驱动和MVVM应用于UWP开发的一些思考 0x00 起因 有段时间没写博客了,其实最近本来是根据梳理的MSDN上的资料(UWP开发目录整理)有条不紊的进行UWP学习的.学习中有了心得体会或遇到了问 ...

  8. MVVM框架从WPF移植到UWP遇到的问题和解决方法

    MVVM框架从WPF移植到UWP遇到的问题和解决方法 0x00 起因 这几天开始学习UWP了,之前有WPF经验,所以总体感觉还可以,看了一些基础概念和主题,写了几个测试程序,突然想起来了前一段时间在W ...

  9. MVVM模式解析和在WPF中的实现(六) 用依赖注入的方式配置ViewModel并注册消息

    MVVM模式解析和在WPF中的实现(六) 用依赖注入的方式配置ViewModel并注册消息 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二 ...

随机推荐

  1. 利用DataSet部分功能实现网站登录

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  2. ros学习网站

    ROS机器人操作系统入门-中国大学MOOC      https://www.bilibili.com/video/av24585414/?p=39 http://i.youku.com/i/UNDA ...

  3. MySql(四):备份与恢复

    一.数据库备份使用场景 下面我就列举一下我个人理解的我们能够需要用到数据库备份的一些比较常见的情况吧. a.数据丢失应用场景 1.人为操作失误造成某些数据被误操作:2.软件BUG 造成数据部分或者全部 ...

  4. Hadoop关于Wrong FS错误

    关于使用java api上传文件. 在定义一个FileSystem变量的时候伪分布式和单机版的方法是不一样的,单机版使用的是FileSystem类的静态函数 FileSystem hdfs = Fil ...

  5. linux uart驱动——uart原理(一)

    UART(Universal Asynchronous Receiver and Transmitter)通用异步收发器(异步串行通信口),是一种通用的数据通信协议,它包括了RS232.RS499.R ...

  6. linux下安装最新版Subversion 1.8.9

    linux下安装最新版subversion,代码: [root@localhost subversion-1.8.9]# ./configure --prefix=/usr/local/subvers ...

  7. 巧用redis位图存储亿级数据与访问

    业务背景 现有一个业务需求,需要从一批很大的用户活跃数据(2亿+)中判断用户是否是活跃用户.由于此数据是基于用户的各种行为日志清洗才能得到,数据部门不能提供实时接口,只能提供包含用户及是否活跃的指定格 ...

  8. mongodb 配置单实例与双实例

    环境: centos6.5 192.168.16.70 配置单实例mongodb:[root@www soft]# tar xf mongodb-linux-x86_64-rhel62-3.2.7.t ...

  9. BZOJ4829: [Hnoi2017]队长快跑

    BZOJ4829: [Hnoi2017]队长快跑 Description 众所周知,在P国外不远处盘踞着巨龙大Y. 传说中,在远古时代,巨龙大Y将P国的镇国之宝窃走并藏在了其巢穴中,这吸引着整个P国的 ...

  10. UVA 11077 - Find the Permutations(递推)

    UVA 11077 - Find the Permutations option=com_onlinejudge&Itemid=8&page=show_problem&cate ...