• 【Unity 框架】QFramework v1.0 使用指南 工具篇:11. 光速实现 EditorCounterApp 和 给主程看的开发模式 | Unity 游戏框架 | Unity 游戏开发 | Unity 独立游戏


    首先,我们来实现一个好玩的事情,就是在前边已经实现好的 CounterApp 的基础上,光速实现一个编辑器版本的 CounterApp。

    代码非常简单,如下:

    #if UNITY_EDITOR
    using System;
    using UnityEditor;
    using UnityEngine;
    
    namespace QFramework.Example
    {
        public class EditorCounterAppWindow : EditorWindow,IController
        {
    
            [MenuItem("QFramework/Example/EditorCounterAppWindow")]
            static void Open()
            {
                GetWindow<EditorCounterAppWindow>().Show();
            }
            
            private ICounterAppModel mCounterAppModel;
    
            private void OnEnable()
            {
                mCounterAppModel = this.GetModel<ICounterAppModel>();
            }
    
            private void OnDisable()
            {
                mCounterAppModel = null;
            }
    
            private void OnGUI()
            {
                if (GUILayout.Button("+"))
                {
                    this.SendCommand<IncreaseCountCommand>();
                }
                
                GUILayout.Label(mCounterAppModel.Count.Value.ToString());
    
    
                if (GUILayout.Button("-"))
                {
                    this.SendCommand<DecreaseCountCommand>();
                }
            }
    
            public IArchitecture GetArchitecture()
            {
                return CounterApp.Interface;
            }
        }
    }
    
    #endif
    

    代码量不多,运行结果如下:

    image.png

    这样就非常快速地实现了 CounterApp 的 编辑器版本。

    因为 QFramework 写的 App ,底层三层是可以复用的。

    如图所示:

    image.png

    底层的三层 与 表现层 的通信方式有 Command、回调/事件、方法/Query。

    我们可以把表现层类比成网页前端,而底层三层类比成服务器。

    那么 Command、回调/事件、方法/Query 其实就是类似于 HTTP 或者 TCP 的接口或协议。

    而接口或者协议只要做好约定,那么前端就不需要关心服务端的具体实现了,而服务端也不需要关心前端的具体实现。

    这就做到了在分工时,将表现层和底层三层的工作分别给不同的人来负责。

    而笔者曾经做过一个这样的项目。

    在项目中笔者负责将 底层三层实现好,然后和服务器把数据和接口调好,数据的显示部分笔者用的一个快速写界面的方案,比如 xmllayout 或者 delight,这种方案写界面非常快,可以用来实现系统原型。

    然后等数据和接口调好,系统原型实现好后,把界面、做场景流程、做表现的工作都分配给了初学者的同事们,同事们只要看实现的系统原型,就知道调用哪些 Command/Query、监听哪些事件、或调用哪些方法,这样就可以做好分工协作了。

    用一张图表示如下:

    image.png

    当然这只是其中一种的项目开发模式。

    随着时间,初学者同事们用熟了这套架构之后,渐渐地也能自己写底层三层了,于是笔者就慢慢把底层的工作量也分出去了,自己就没啥事干了。

    好了,这就是一次笔者曾经使用的一种开发模式的分享,而具体自己的开发模式,需要根据实际情况来制定,最简单的方式就是先按照原有的习惯的开发模式,然后逐渐掌握这套架构,掌握了之后慢慢改进之前的开发模式。

    这篇就介绍到这里。

    更多内容

  • 相关阅读:
    pionter指针小结
    C++笔记 5
    C++笔记 3
    ipad safari 滚动(overflow)解决方案
    IE9 BUG overflow :auto 底部空白解决方案
    asp.net 导出EXCEL超高兼容(不用装Excel)
    jquery post 同步异步总结
    jquery-alert对话框
    左固定右边自适应框架
    删除Cookies
  • 原文地址:https://www.cnblogs.com/liangxiegame/p/16798642.html
Copyright © 2020-2023  润新知