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. 取出所有的Map集合

    public static void main(String[] args) { Map<Integer, String> map = new HashMap<Integer, St ...

  2. 如何在DOS窗口中显示UTF-8字符

    在中文Windows系统中,如果一个文本文件是UTF-8编码的,那么在CMD.exe命令行窗口(所谓的DOS窗口)中不能正确显示文件中的内容.在默认情况下,命令行窗口中使用的代码页是中文或者美国的,即 ...

  3. JOB Hunting 总结-----2013-11-5

    从9月份开始的找工作大战,告一段落:其实早在10月中旬就已搞定,现在回想起这过去的几个月,很充实,很疲惫,很挫败又很有成就感!      开始找工作,对未来有过很多憧憬,也很迷茫,不知道自己的未来会在 ...

  4. Spark Streaming和Kafka整合开发指南(二)

    在本博客的<Spark Streaming和Kafka整合开发指南(一)>文章中介绍了如何使用基于Receiver的方法使用Spark Streaming从Kafka中接收数据.本文将介绍 ...

  5. js关于变量作为if条件的真假问题

    var a = ""; if(a){ ..... }else{ .....} 以下情况会被认为返回false: "" 空的字符串 为 0 的数字 为 null ...

  6. 【WPF学习笔记】之如何通过后台C#代码添加(增/删/改按钮)实现对SQLServer数据库数据的更改

    首先,需要连接SQLServer数据库的服务器名称server.数据库名database.数据库用户名uid以及密码pwd,如下图: 然后需要以下数据库SQL代码段,还有一个myHelper.cs代码 ...

  7. wpf自定义colorpicker

    自定义colorpicker <ObjectDataProvider MethodName="GetType" ObjectType="{x:Type system ...

  8. Android发送验证码的倒计时button

    1 直接上图 2 原理 原理非常easy,就是把对应的倒计时逻辑等封装到一个控件中,并向外部提供接口. 3 代码 import java.util.Timer; import java.util.Ti ...

  9. 【BZOJ3489】A simple rmq problem kd-tree

    [BZOJ3489]A simple rmq problem Description 因为是OJ上的题,就简单点好了.给出一个长度为n的序列,给出M个询问:在[l,r]之间找到一个在这个区间里只出现过 ...

  10. 九度OJ 1011:最大连续子序列 (DP)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:5615 解决:2668 题目描述:     给定K个整数的序列{ N1, N2, ..., NK },其任意连续子序列可表示为{ Ni, N ...