【設計和開發一套簡單自動化UI框架】
目標:編寫一個簡單通用UI框架用於管理頁面和完成導航跳轉
最終的實現效果請拉到最下方檢視
框架具體實現的功能和需求
- 載入,顯示,隱藏,關閉頁面,根據標示獲得相應介面例項
- 提供介面顯示隱藏動畫介面
- 單獨介面層級,Collider,背景管理
- 根據儲存的導航資訊完成介面導航
- 介面通用對話方塊管理(多型別Message Box)
- 便於進行需求和功能擴充套件(比如,在跳出頁面之前新增邏輯處理等)
編寫UI框架意義
- 開啟,關閉,層級,頁面跳轉等管理問題集中化,將外部切換等邏輯交給UIManager處理
- 功能邏輯分散化,每個頁面維護自身邏輯,依託於框架便於多人協同開發,不用關心跳轉和顯示關閉細節
- 通用性框架能夠做到簡單的程式碼複用和"專案經驗"沉澱
框架中設計的視窗型別和框架所需定義如下
動畫介面設計
介面可以繼承該介面進行實現開啟和關閉動畫
視窗管理和導航設計實現
導航功能實現通過一個顯示視窗堆疊實現,每次開啟和關閉視窗通過判斷視窗屬性和型別更新處理BackSequence資料
- 開啟介面:將當前介面狀態壓入堆疊中更新BackSequence資料
- 返回操作(主動關閉當前介面或者點選返回按鈕):從堆疊中Pop出一個介面狀態,將相應的介面重新開啟
- 怎麼銜接:比如從一個介面沒有回到上一個狀態而是直接的跳轉到其他的介面,這個時候需要將BackSequence清空因為當前的導航鏈已經被破壞,當BackSequence為空需要根據當前視窗指定的PreWindowId告知系統當從該介面返回,需要到達的指定頁面,這樣就能解決怎麼銜接的問題,如果沒斷,繼續執行導航,否則清空資料,根據PreWindowId進行導航
導航系統中關鍵性設計:
遊戲中可以存在多個的Manager進行管理(一般在很少需求下才會使用),每個管理物件需要維護自己的導航資訊BackSequence,每次退出一個介面需要檢測當前退出的介面是否存在相應的Manager管理,如果存在則需要先執行Manager退出操作(退出過程分步進行)保證介面一層接著一層正確退出
視窗層級,Collider,統一背景新增如何實現?
有很多方式進行層級管理,該框架選擇的方法如下
- 設定三個常用層級Root,根據視窗型別在載入到遊戲中時新增到對應的層級Root下面即可,每次新增重新計算設定層級(通過UIPanel的depth實現)保證每次開啟一個新視窗層級顯示正確,每次視窗內通過depth的大小區分層級關係
- 根據視窗Collider和背景型別,在視窗的最小Panel上面新增Collider或者帶有碰撞體的BackGround即可
具體實現如下:
多形態MessageBox實現
這個應該是專案中一定會用到的功能,說下該框架簡單的實現
- 三個按鈕三種回撥邏輯:左中右三個按鈕,提供設定內容,設定回撥函式的介面即可
- 提供介面設定核心Content
- 不同作用下不同的按鈕不會隱藏和顯示
- 圖集管理,針對大中型遊戲對遊戲記憶體要求苛刻的專案,一般都會對UI圖集貼圖資源進行動態管理,載入和解除安裝圖集,保證UI貼圖佔用較少記憶體
- 增加一些通用處理:變灰操作,Mask遮罩(一般用於新手教程中)等
- 在進行切換的過程可以需要Load新場景需求,雖然這個也可以在UI框架外實現
- 對話系統也算是UI框架的功能,新手引導系統也可以加入到UI框架中,統一管理和處理新手引導邏輯
需求總是驅動著系統逐漸強大,逐漸完善,逐漸發展,一步一步來吧~
實現效果
整個框架的核心部分介紹完畢,有需要檢視原始碼的請移步GitHub,後續會繼續完善和整理,希望能夠給耐心看到結尾的朋友一點啟發或者帶來一點幫助,存在錯誤和改進的地方也希望留言交流共同進步學習~
有些時候,我們總是知道這麼個理明白該怎樣實現,但是關鍵的就是要動手實現出來,實現的過程會發現自己的想法在慢慢優化,不斷的需求和bug的產生讓框架慢慢成熟,可以投入專案使用提升一些開發效率和減少工作量。
By 漂流燕(Andy)
相關文章
- UI自動化關鍵字驅動的簡單設計思路UI
- 測試開發之自動化篇-自動化測試框架設計框架
- UI 自動化框架 yaml 大法UI框架YAML
- pytest+selenium+allure web端UI自動化框架設計WebUI框架
- 聊聊UI自動化的PageObject設計模式UIObject設計模式
- 騰訊出品小程式自動化測試框架【Minium】系列(七)測試框架的設計和開發框架
- 肖sir__po框架之ui自動化框架框架UI
- UI自動化測試框架Cypress初探UI框架
- web自動化框架—BasePage 類的簡單封裝Web框架封裝
- 從零開始搭建一個簡單的ui自動化測試框架04(pytest+selenium+allure)UI框架
- 淺談自動化測試框架開發框架
- EDP .Net開發框架--自動化日誌框架
- UI自動化實戰進階PO設計模式UI設計模式
- 移動端 UI 自動化測試框架對比UI框架
- 自動化測試框架: 設計的重構框架
- android 5個自動化測試Ui框架AndroidUI框架
- 搭建 WPF 上的 UI 自動化測試框架UI框架
- Semantic UI:語義化前端開發框架UI前端框架
- UI設計和前端開發的區別UI前端
- LeaRun敏捷開發框架快速設計表單敏捷框架
- 整裝待發 QTA UI自動化測試框架迎來大更新QTUI框架
- Web自動化—簡單瞭解Web
- 簡單設計並開發一個行動通訊程式
- UI自動化在RobotFramework中採用的分層設計UIFramework
- 微軟出品自動化神器【Playwright+Java】系列(十二)測試框架的設計與開發微軟Java框架
- 介面自動化與ui自動化區別UI
- Robot Framework自動化測試框架核心指南-如何做好自動化測試平臺框架的設計Framework框架
- 自己動手寫Web自動化測試框架(7):框架架構的設計Web框架架構
- 簡單認識什麼是UI設計UI
- Python3簡易介面自動化測試框架設計與實現(上)Python框架
- Python3簡易介面自動化測試框架設計與實現(中)Python框架
- QuickLens,UI設計/開發工具UI
- selenium自動化測試框架之PO設計模式框架設計模式
- 一種基於 cypress 的 UI 自動化測試框架UI框架
- UI設計培訓分享:ui設計的如何進行元件化和模組化?UI元件化
- 自動化測試系列 —— UI自動化測試UI
- 關於自動化平臺的動態選單設計
- 從零開始實現簡單 RPC 框架 1:RPC 框架的結構和設計RPC框架