首页 > 代码库 > 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#
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。