zoukankan      html  css  js  c++  java
  • 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(1);
                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);
        }
    }
  • 相关阅读:
    Spring 整合Hibernate与Struts2
    Spring @注解详解(转)
    Spring 事务
    Spring c3p0支持Hibernate配置
    Spring c3p0连接池配置
    Spring dbcp连接池配置与示例(以及JDBCTemplate的使用)
    struts转换器详解
    struts拦截器详解
    struts拦截器的使用
    OGNL表达式详解
  • 原文地址:https://www.cnblogs.com/lightlfyan/p/4207348.html
Copyright © 2011-2022 走看看