首页 > 代码库 > unity3d mvvm c#

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);    }}

 

unity3d mvvm c#