客户端PureMVC框架与轻型U3D服务器Tnet结合图解

    本文主要针对游戏设计。
    一.pureMVC图解框架模块
    【详细设计太多,不深入解释】
    [资源采用动态加载,包括UI面板等]
    补充:方案,派发事件的时候,可派发一个泛型结构过去,里面包含回调函数,谁派发,就调用谁的,已应用。

     

    范例:
    【LoginMediator】
    [mw_shl_code=csharp,true]public LoginMediator()
    : base(NAME)
    {
    addEventListener(LoginEventType.LOGIN_START_UP, onStartUp);
    addEventListener(LoginEventType.BACK_RESULT_CLIENT, backResultFromServer);
    }
    private void onStartUp(PEvent PEvent)
    {
    Debug.Log(“—–login——–onStartUp—–“);
    LoaderData<WWW> data = new LoaderData<WWW>();
    data.loadPath = ResourcesXmlLoader.getInstance().getResouceUrlById(“20001”, “12000”);
    data.action = initPanel;
    dispatchEventWith(SystemEventType.LOAD_START_UP, data);
    }
    private void initPanel(WWW asset)
    {
    //解析面板
    GameObject go = (GameObject)asset.assetBundle.mainAsset;
    panel.addEventListener(LoginEventType.SEND_RESULT_SERVER, sendResultToServer);
    panel.addEventListener(LoginEventType.OPEN_REGISTER_PANEL, openRegisterPanel);
    panel.init(go);
    }[/mw_shl_code]

    【Panel】
    [mw_shl_code=csharp,true]
    public override void init(GameObject obj)
    {
    this.panelObj = (GameObject)GameObject.Instantiate(obj);
    base.init(panelObj);
    new PanelHandler().RootHandler(panelObj);
    errorObj = panelObj.transform.FindChild(“ErrorPanel”).gameObject;
    loginBtn = panelObj.transform.FindChild(“Submit”).gameObject;
    registerBtn = panelObj.transform.FindChild(“Register”).gameObject;
    UIEventListener.Get(loginBtn).onClick = onSubmitClick;
    UIEventListener.Get(registerBtn).onClick = onRegisterClick;
    }

    public void closeErrorPanel()
    {
    base.closeErrorPanel(errorObj, PanelType.SCALE);
    }

    public void showErrorPanel()
    {
    errorObj.transform.FindChild(“Label”).GetComponent<UILabel>().text = “账户或者密码错误,登录失败!”;
    base.showErrorPanel(errorObj, PanelType.SCALE);
    GameController.getInstance().addDelayCallFun(3.0f, closeErrorPanel);
    }[/mw_shl_code]

    【LoadingMediator】
    [mw_shl_code=csharp,true]public LoadingMediator()
    : base(NAME)
    {
    addEventListener(SystemEventType.LOAD_START_UP, onStartUp);
    addEventListener(SystemEventType.SCENE_LOAD_SUCESSFUL, onLoadAllComplete);
    loadingPanelObj = GameObject.Find(“LoadSceneDates”);
    }
    private void onStartUp(PEvent pEvent)
    {
    LoaderData<WWW> data = (LoaderData<WWW>)pEvent.data;
    Initialization();
    Loader loader = new Loader();
    loader.addEventListener(LoaderEventType.LOAD_PROGRESS, onLoadProgress);
    loader.load(data);
    }
    //初始化load界面的UI
    private void Initialization()
    {
    if (!loadingPanelObj.activeSelf)
    {
    loadingPanelObj.SetActive(true);
    }
    }
    //显示资源下载进度条
    private void onLoadProgress(PEvent obj)
    {
    loadingPanelObj.GetComponentInChildren<UISlider>().value = (float)obj.data;
    Debug.Log(“progress:” + float.Parse(obj.data.ToString()) * 100 + “%”);
    }
    [/mw_shl_code]
    【Loader】
    [mw_shl_code=csharp,true]public void load(LoaderData<WWW> data, int version = 1)
    {
    if (isLoading)
    {
    Debug.LogWarning(“资源正在加载中,不能进行加载操作。”);
    return;
    }
    this.data = data;
    string url;
    isLoading = true;
    if (Application.platform == RuntimePlatform.WindowsWebPlayer)
    {
    url = ServerEventType.LOAD_RES_SERVERURL + “res/” + data.loadPath;
    }
    else
    {
    Caching.CleanCache();
    url = ServerEventType.LOAD_RES_SERVERURL + “res/” + data.loadPath;
    Debug.Log(“xml path” + url);
    }
    www = WWW.LoadFromCacheOrDownload(url, version);

    if (www.isDone)
    {
    loadComplete();
    }
    else
    GameController.getInstance().addInterval(loadProgress);
    }
    [/mw_shl_code]

     

    二 . Tnet轻型多人在线游戏开发框架图解分析
    【具体Tnet框架理解,可自行运行example例子,服务端同步打断点研究】
    [服务器也是C#写的,代码很清晰]

     

     

    三 . 总结
        个人结合两者暂实现登陆注册,框架流程基本走通。
    图例:
    1.启动服务器
    2. 启动客户端
    3.登陆失败
    3.登录服务器验证
    4.数据库数据
    5.注册信息

    6.注册结果
    7.注册信息数据库写入
    7.写入数据库

    四 . 完结
    基本可以跑通框架的话,就可以慢慢开始开发和优化了。
    [贵在设计,有错勿殴]
     
    转载请注明出处。
    作者: 大帅纷纭

    微博:http://weibo.com/2357191704/profile?topnav=1&wvr=6

    博客:http://blog.csdn.net/dashuaifenyun1991

    邮箱:bandit_empire@163.com

     

    有帮助就分享一下吧!

    转载请注明:少狼 – 敬畏知识的顽皮狗 » 客户端PureMVC框架与轻型U3D服务器Tnet结合图解

    喜欢 0

*

还没有人抢沙发呢~