摘" 要: 針對中醫(yī)藥高等院校學(xué)生在學(xué)習(xí)方劑學(xué)過程中存在的知識點眾多、識記量大、興趣度不高和日常練習(xí)困難等問題,通過調(diào)研分析,設(shè)計一種基于Unity仿真技術(shù)的移動端方劑學(xué)方藥離合實訓(xùn)平臺。該平臺前端主要采用Unity框架構(gòu)建功能模塊,選取JWT進(jìn)行輕量級身份驗證,并應(yīng)用RBAC思想實現(xiàn)權(quán)限管理;后端業(yè)務(wù)邏輯在使用SpringBoot框架的基礎(chǔ)上,通過Java語言編寫。為了保證系統(tǒng)響應(yīng)速度及交互效果,融合MySQL、Redis、ElasticSearch三種體系架構(gòu)的優(yōu)點,構(gòu)建了一套性能高效且便于移植的數(shù)據(jù)庫機(jī)制。所設(shè)計平臺實現(xiàn)了知識點內(nèi)容學(xué)習(xí)、筆記收藏、錯題集、方劑分類練習(xí)、用戶在線PK、積分排行榜等功能。經(jīng)過中醫(yī)藥相關(guān)專業(yè)學(xué)生的驗證及使用,驗證了該平臺能夠有效地利用碎片化時間,隨時隨地學(xué)習(xí)和測試用戶對于方劑學(xué)知識的掌握情況,達(dá)到了提高自身學(xué)習(xí)效率的目的。
關(guān)鍵詞: Unity; 方藥離合; 移動端APP; 協(xié)程; UI適配; 數(shù)據(jù)庫機(jī)制; 可視化界面
中圖分類號: TN911.2?34; TP391.3" " " " " " " " " "文獻(xiàn)標(biāo)識碼: A" " " " " " " " "文章編號: 1004?373X(2024)16?0058?11
Design of mobile terminal based practical training platform of separation and combination of formula and medicine and its implementation
WEI Peiyang1, 2, 3, FEI Yutong4, GAO Lin4, ZHANG Jie1, DONG Guangtong4, LI Zhibin1
(1. College of Software Engineering, Chengdu University of Information Technology, Chengdu 610225, China;
2. College of Computer Science and Technology, Chongqing University of Posts and Telecommunications, Chongqing 400065, China;
3. Automatic Software Generation amp; Intelligence Service Key Laboratory of Sichuan Province, Chengdu 610225, China;
4. School of Traditional Chinese Medicine, Beijing University of Chinese Medicine, Beijing 100029, China)
Abstract: In allusion to the problems of numerous knowledge points, large memorization capacity, low interest, and difficulties in daily practice in the learning process of herbal prescription science for students in higher institutions of Chinese medicine, a mobile terminal herbal prescription science formula and medicine separation and combination practical training platform based on Unity simulation technology is designed by the investigation and analysis. On the front?end of the platform, the Unity framework is mainly adopted to build the functional module, JWT is selected for lightweight authentication, and RBAC thinking is used to realize the permission management. On the basis of using the SpringBoot framework, the backend business logic is written in Java language. In order to ensure system response speed and interaction effect, a high?performance and portable database mechanism is constructed by integrating the advantages of MySQL, Redis, and ElasticSearch architectures. The designed platform can realize functions such as knowledge point content learning, note collection, wrong question collection, herbal prescription classification practice, user online PK, and point ranking list. After the verification and use of students majoring in traditional Chinese medicine, the results show that the platform can effectively make use of fragmented time, learn and test users' mastery of herbal prescription science knowledge anytime and anywhere, and achieve the purpose of improving their learning efficiency.
Keywords: Unity; separation and combination of formula and medicine; mobile APP; collaborative process; UI adaptation; database mechanism; visual interface
0" 引" 言
隨著信息技術(shù)的發(fā)展,互聯(lián)網(wǎng)應(yīng)用已經(jīng)滲透到各行各業(yè),而中醫(yī)藥作為中國傳統(tǒng)文化的杰出代表,一直是國家文化繁榮和傳承發(fā)揚(yáng)的重點[1]。信息技術(shù)與中醫(yī)藥的交叉融合發(fā)展,特別是將互聯(lián)網(wǎng)應(yīng)用到中醫(yī)藥教育教學(xué)領(lǐng)域有著巨大的空間[2?3]。經(jīng)過調(diào)研,當(dāng)前傳統(tǒng)中醫(yī)藥教學(xué),尤其是以方劑學(xué)為代表的臨床實踐類課程普遍存在知識點零碎且識記量大,導(dǎo)致學(xué)生學(xué)習(xí)興趣度不高、缺乏完整的背記時間、日常學(xué)習(xí)和練習(xí)困難等問題[4]。
針對中醫(yī)藥教育教學(xué)過程存在的種種問題,利用信息化技術(shù)的優(yōu)勢和特點,國內(nèi)也出現(xiàn)了一些解決方案和有益的探索。么元超等通過數(shù)據(jù)挖掘技術(shù)整合了方劑學(xué)所涉及的紛繁復(fù)雜的知識形成體系,并利用關(guān)聯(lián)算法呈現(xiàn)數(shù)據(jù)背后隱藏的知識價值,形成融合教學(xué)和科研雙重功能的方劑學(xué)實踐實訓(xùn)平臺[5]。粟栗等探討了一種基于方劑學(xué)基礎(chǔ)知識自主學(xué)習(xí)與測試的在線平臺,但是基于Web架構(gòu)的組織形式未能完全考慮當(dāng)前移動端蓬勃發(fā)展的需求[6]。王寶瑩等研發(fā)了一款基于Android平臺的中藥方劑學(xué)移動應(yīng)用,但知識題庫內(nèi)容不夠豐富[7]。
文獻(xiàn)[8]從系統(tǒng)響應(yīng)和反饋角度提出了一種方劑學(xué)實訓(xùn)平臺,但是較多關(guān)注性能和數(shù)據(jù)同步。上述研究人員利用信息化手段從不同方向?qū)Ψ絼W(xué)教學(xué)實踐做了嘗試,同時,針對中醫(yī)藥其他專業(yè)課程的教學(xué)改革也呈現(xiàn)出百花齊放的態(tài)勢。王璐宇等研發(fā)了卡牌類中醫(yī)藥手機(jī)游戲“百草大師”,將中醫(yī)藥相關(guān)知識轉(zhuǎn)化為大學(xué)生喜聞樂見的游戲形式,一定程度上增強(qiáng)了知識學(xué)習(xí)的趣味性,讓玩家在學(xué)習(xí)知識的同時又能夠領(lǐng)略中醫(yī)藥文化的博大精深[9]。魏培陽等針對中醫(yī)藥典籍閱讀不便的情況,研發(fā)了一套閱讀對照系統(tǒng),實現(xiàn)原文與文獻(xiàn)、原文與圖片等對照閱讀及標(biāo)注[10]。周笑盈利用虛擬現(xiàn)實技術(shù),設(shè)計了一種基于古代典籍的可視化閱讀系統(tǒng)[11]。蘇哲采用Unity研發(fā)了一套基于衛(wèi)生監(jiān)督業(yè)務(wù)的仿真實訓(xùn)平臺[12]。
由上述的文獻(xiàn)可知,國內(nèi)不同的學(xué)者和研究人員通過多維視角,對包括方劑學(xué)在內(nèi)的中醫(yī)藥教育教學(xué)信息化做了大量的實踐和探索,但是存在的問題并未能有效解決。因此,本文吸收借鑒上述文獻(xiàn)思路并結(jié)合當(dāng)前業(yè)務(wù)需求,提出了一種使用Untiy技術(shù)開發(fā)實現(xiàn)的基于移動端應(yīng)用的方藥離合實訓(xùn)平臺。
該平臺既充分考慮在校學(xué)生零碎時間較多、興趣度較低、知識點較雜的現(xiàn)實,又整合了方劑學(xué)的知識體系,融合了方劑、方藥、病案等多種維度,還可以通過學(xué)習(xí)、筆記、收藏、練習(xí)、PK對戰(zhàn)等形式強(qiáng)化記憶,提高學(xué)習(xí)積極性。
1" 項目概述
方藥離合實訓(xùn)平臺是一款基于“互聯(lián)網(wǎng)+方劑學(xué)”臨床實訓(xùn)需求研發(fā)的移動端系統(tǒng)。該平臺主要通過信息化手段解決方劑學(xué)學(xué)習(xí)存在的普遍性問題,利用移動端APP實現(xiàn)隨時隨地、無限制地對方劑學(xué)知識學(xué)習(xí)、復(fù)習(xí)和練習(xí)的目的。該平臺以趣味性和游戲性為牽引,主要通過Unity技術(shù)實現(xiàn)學(xué)生端APP應(yīng)用的豐富化呈現(xiàn)、多角度知識展示,同時又具有高度的知識性和專業(yè)性;平臺選取JWT做輕量級身份驗證以及應(yīng)用RBAC思想實現(xiàn)權(quán)限管理;平臺通過Java語言,應(yīng)用SpringBoot框架實現(xiàn)業(yè)務(wù)邏輯及管理功能,并通過封裝接口服務(wù)與Unity交互通信;平臺基于MySQL、Redis、ElasticSearch構(gòu)建了一套性能高效且便于移植的數(shù)據(jù)庫機(jī)制,承載大數(shù)據(jù)量傳輸和存儲任務(wù),滿足多用戶并發(fā)緩存數(shù)據(jù)需求,確保了系統(tǒng)的響應(yīng)速度和交互效果。
平臺根據(jù)方劑學(xué)教學(xué)要求,提供按章節(jié)和知識點學(xué)習(xí)的模式。在具體實踐和操作中可以選擇順序、難度、隨機(jī)學(xué)習(xí)等三種形式,實現(xiàn)對方劑學(xué)知識多維度識記,滿足不同專業(yè)、年級對課程的要求,同時平臺提供學(xué)習(xí)過程中對相關(guān)知識點的個人筆記記錄、重難點收藏等,滿足用戶的個性化學(xué)習(xí)要求。平臺提供知識問答練習(xí)、多用戶PK對戰(zhàn)等模式考察用戶對識記知識的掌握情況,并可以及時提供易錯題集,方便查漏補(bǔ)缺和重點復(fù)習(xí);平臺提供用戶在所處組織的積分排行榜,可以起到督促學(xué)習(xí)、獎勵先進(jìn)的效果;平臺構(gòu)建了方劑學(xué)知識資源庫,把課程要求掌握的組成、功用、主治病證、配伍等詳情要點做了梳理顯示,通過圖文并茂的展示向用戶傳達(dá)。平臺整體開發(fā)過程遵循軟件工程項目執(zhí)行步驟和進(jìn)程,總體采用瀑布模型+原型法的建設(shè)思路,通過快速、高效和迭代式的原型不斷與終端用戶溝通交流,匯總和細(xì)化需求。軟件開發(fā)過程采用當(dāng)前主流的前后端分離模式,對關(guān)鍵核心業(yè)務(wù)功能點重點支撐解決。同時考慮部署環(huán)境和使用習(xí)慣,依據(jù)穩(wěn)定可靠、簡單易用和易于維護(hù)擴(kuò)展的原則,整體軟件設(shè)計和開發(fā)兼顧業(yè)務(wù)功能的完整性和用戶操作的可行性。
2" 平臺總體框架
平臺的核心業(yè)務(wù)主要由方藥離合實訓(xùn)平臺可視化模塊和方藥離合實訓(xùn)平臺管理模塊組成。平臺的整體框架結(jié)構(gòu)圍繞上述兩個業(yè)務(wù)逐步展開,依據(jù)分層構(gòu)建的思路,逐步向上向下擴(kuò)展,最終形成了如圖1所示的總體框圖。
平臺總體框架從上到下依次為展示層、安全網(wǎng)絡(luò)層、網(wǎng)關(guān)層、業(yè)務(wù)層、數(shù)據(jù)中心層、數(shù)據(jù)處理層、持久層、工程化管理層。其中,展示層為平臺提供的服務(wù)可以通過各種設(shè)備獲取數(shù)據(jù)和瀏覽查看。安全網(wǎng)絡(luò)層,顧名思義負(fù)責(zé)網(wǎng)絡(luò)安全,通過配置網(wǎng)關(guān)、防火墻以及對部分關(guān)鍵數(shù)據(jù)加密,能夠有效保護(hù)系統(tǒng)不受黑客攻擊和惡意軟件侵害,保護(hù)系統(tǒng)安全。網(wǎng)關(guān)層負(fù)責(zé)接收展示層發(fā)送的處理請求,并向?qū)?yīng)的業(yè)務(wù)模塊發(fā)送指令,保證系統(tǒng)高效的處理能力和吞吐量。業(yè)務(wù)層則包含了系統(tǒng)所有的核心業(yè)務(wù)邏輯和處理,實現(xiàn)系統(tǒng)的不同業(yè)務(wù)需求,確保多個應(yīng)用程序、終端可以共享業(yè)務(wù)邏輯和數(shù)據(jù)處理程序,同時利用權(quán)限管理滿足用戶的各類個性化需求,通過日志記錄構(gòu)件增強(qiáng)系統(tǒng)復(fù)用性和可維護(hù)性。數(shù)據(jù)中心層負(fù)責(zé)數(shù)據(jù)的匯總和統(tǒng)計,提供按業(yè)務(wù)、角色、類別等不同維度的報表展示和導(dǎo)出。數(shù)據(jù)處理層提供不同形式的數(shù)據(jù)對接處理,包括文檔格式的導(dǎo)入導(dǎo)出、并發(fā)處理的消息隊列、關(guān)鍵數(shù)據(jù)包加解密、用戶驗證token的生成與驗證以及基礎(chǔ)的數(shù)據(jù)庫讀寫操作等。持久層主要負(fù)責(zé)數(shù)據(jù)的存儲和管理,保存用戶信息和系統(tǒng)生成的業(yè)務(wù)數(shù)據(jù),并對各類特殊操作提供緩存、索引等服務(wù),使得對數(shù)據(jù)的操作更加高效可靠。工程化管理層運(yùn)用CI/CD及容器化思想,使得系統(tǒng)的開發(fā)、集成、部署、測試等環(huán)節(jié)更加自動化、輕量化,提高系統(tǒng)整體質(zhì)量??傊ㄟ^分層架構(gòu),使得平臺開發(fā)模塊化,在提高靈活性和可維護(hù)性的同時可以有效降低系統(tǒng)的復(fù)雜度和維護(hù)成本。
3" 相關(guān)技術(shù)
3.1" Unity
Unity是一款跨平臺游戲開發(fā)引擎,多用于游戲[13]、仿真[14]、虛擬現(xiàn)實[15]等軟件或系統(tǒng)的開發(fā),該引擎具有優(yōu)秀的圖形渲染效果和引人入勝的視覺感知,并且具有超強(qiáng)的跨平臺特性,支持PC、手機(jī)和平板等多終端應(yīng)用,完美解決了平臺移植難題[16],節(jié)約了研發(fā)時間,提升了開發(fā)效率。
在平臺開發(fā)過程中用到的Unity關(guān)鍵技術(shù)主要有以下4項。
1) 預(yù)制體(Prefab)。Unity中的預(yù)制體是游戲?qū)ο蟮念A(yù)配置集合,可以包含任意數(shù)量的組件、子對象和屬性設(shè)置。主要用于中醫(yī)藥材模型的建模。
2) 協(xié)程(Coroutine)。Unity中的協(xié)程是一種輕量級的異步編程技術(shù),通過IEnumerator函數(shù)實現(xiàn),通過yield語句,可以在協(xié)程中暫停某些動畫等的執(zhí)行。主要用于PK對戰(zhàn)的連接、答題倒計時等場景。
3) UGUI圖形用戶界面系統(tǒng)。Unity中的UGUI系統(tǒng)是一套強(qiáng)大的界面設(shè)計工具,支持按鈕、文本、圖像、滑塊等多種元素,并提供可視化編輯器。主要用于界面搭建與設(shè)計。
4) 畫布(Canvas)。Unity中的畫布用于呈現(xiàn)和渲染用戶界面,可以設(shè)置不同的渲染模式、攝像機(jī)關(guān)聯(lián)和渲染排序,以適應(yīng)不同UI需求。主要用于提供基礎(chǔ)的分辨率適應(yīng)和縮放。
3.2" JWT
JWT(JSON Web Token)是一種緊湊的、URL安全的表示方法,用于表示在雙方之間傳輸?shù)穆暶?。JWT中的聲明被編碼為JSON對象,該對象用作JSON Web簽名(JWS)結(jié)構(gòu)的負(fù)載或JSON Web加密(JWE)結(jié)構(gòu)的明文,使聲明能夠通過消息認(rèn)證碼(MAC)進(jìn)行數(shù)字簽名或完整性保護(hù)和/或加密。
3.3" RBAC
RBAC(Role?Based Access Control)是一種訪問控制模型,其核心概念是基于角色的權(quán)限分配。該模型的設(shè)計目標(biāo)是簡化對系統(tǒng)資源的訪問管理,提高系統(tǒng)的安全性和可維護(hù)性。
RBAC的實現(xiàn)通常包括以下4個步驟。
1) 設(shè)計角色和權(quán)限的層次結(jié)構(gòu)。
2) 將用戶分配到合適的角色。
3) 關(guān)聯(lián)權(quán)限到角色,形成訪問控制矩陣。
4) 通過會話管理機(jī)制維護(hù)權(quán)限的有效性。
4" 平臺功能
目前,平臺開發(fā)已經(jīng)完成并進(jìn)入正式運(yùn)行階段。其中,為了確保平臺的正常運(yùn)行,一共進(jìn)行了9輪測試,發(fā)現(xiàn)236個Bug且已經(jīng)全部解決,錄入各類中藥材圖片1 116張,導(dǎo)入10 076道方劑學(xué)題目。
在基于上述功能性測試和業(yè)務(wù)性完善的基礎(chǔ)上,形成由方藥離合實訓(xùn)平臺可視化模塊和方藥離合實訓(xùn)平臺管理模塊組成的方藥離合實訓(xùn)平臺,其主要功能模塊如圖2所示。
4.1" 方藥離合實訓(xùn)平臺可視化模塊
方藥離合實訓(xùn)平臺可視化模塊是用戶操作的主要部分。由圖2可知,可視化模塊主要由方劑學(xué)習(xí)、筆記查看、知識點收藏、題目練習(xí)、標(biāo)簽、PK對戰(zhàn)、題目收藏、排行榜、錯題本和個人信息等10個功能模塊組成,限于篇幅,本文將重點介紹以下4個關(guān)鍵業(yè)務(wù)。
1) 方劑學(xué)習(xí)。該模塊實現(xiàn)方劑、中藥、炮制、劑型等4種類別知識識記學(xué)習(xí)。用戶根據(jù)需求進(jìn)入所選類別模塊對應(yīng)章節(jié)知識點學(xué)習(xí),關(guān)鍵核心頁面如圖3所示。
進(jìn)入相應(yīng)知識點即可顯示如圖3a)所示的主頁面,查看對應(yīng)方格,以及該方格所示方劑具體組成、功效、主治、方解及用法等,同時通過頁面上部的收藏、標(biāo)簽和筆記標(biāo)識可以分別進(jìn)入如圖3b)~圖3d)所示的具體功能操作頁面,滿足用戶個性化學(xué)習(xí)需求。
2) 題目練習(xí)。該模塊主要通過按難度和章節(jié)兩種練習(xí)模式,達(dá)到對方劑學(xué)知識點自測和練習(xí)的目的,關(guān)鍵核心頁面如圖4所示。
用戶選擇其中一種模式進(jìn)入正式做題環(huán)節(jié)后,主頁面如圖4a)所示,用戶可以根據(jù)需要收藏該題目,同時頁面主要顯示該題題干、選項倒計時,用戶選擇選項確認(rèn)會自動判定是否正確并進(jìn)入下一題。在答題結(jié)束后會顯示如圖4b)的答題記錄以及如圖4c)所示用戶在組織內(nèi)的排名情況,以督促自身學(xué)習(xí)。
3) PK對戰(zhàn)。該模塊包含隨機(jī)匹配、邀請好友對戰(zhàn)、消息查看、PK詳情查看等功能,其中隨機(jī)PK關(guān)鍵核心頁面如圖5所示,邀請PK如圖6所示。
PK對戰(zhàn)中隨機(jī)匹配可以實現(xiàn)與當(dāng)前在線用戶臨時組隊PK對戰(zhàn)答題,通過比賽答題獲取積分,率先獲得20分的用戶獲勝。邀請好友對戰(zhàn)模塊,通過搜索對手學(xué)號或名字信息,邀請對手參與PK對戰(zhàn),若對手同意,直接進(jìn)入對戰(zhàn)界面。被邀請人可以通過消息查看模塊查看對戰(zhàn)信息并決定是否接受。
PK對戰(zhàn)流程如圖7所示。
4) 個人信息模塊。該部分實現(xiàn)用戶頭像、昵稱、E?mail、手機(jī)號等信息修改。
4.2" 方藥離合實訓(xùn)平臺管理模塊
方藥離合實訓(xùn)平臺管理模塊通常服務(wù)于管理員,用于平臺數(shù)據(jù)的管理和統(tǒng)計報表展示,主要由方劑學(xué)習(xí)、方劑練習(xí)、PK對戰(zhàn)、統(tǒng)計查詢、基礎(chǔ)信息管理以及系統(tǒng)管理等6個模塊組成。本文將重點介紹方劑學(xué)習(xí)、方劑練習(xí)、PK對戰(zhàn)、基礎(chǔ)信息管理等4個關(guān)鍵業(yè)務(wù)模塊。
1) 方劑學(xué)習(xí)。該模塊主要管理方劑學(xué)所有知識點內(nèi)容,包括增加、刪除和修改知識點信息。此外,還能夠?qū)φn程所需方劑知識點進(jìn)行管理,包括對章節(jié)結(jié)構(gòu)和目錄信息等進(jìn)行維護(hù),便于管理人員對方劑學(xué)教學(xué)進(jìn)程重難點等做出合理調(diào)整和優(yōu)化完善。核心界面見圖8。
2) 方劑練習(xí)。該模塊涵蓋題庫、練習(xí)記錄、錯題記錄、易錯題等管理模塊,實現(xiàn)對方劑練習(xí)題目數(shù)據(jù)的精細(xì)化操作。方劑練習(xí)題目詳情界面如圖9所示。
3) PK對戰(zhàn)模塊。該模塊可以查看每個用戶PK對戰(zhàn)記錄詳情以及結(jié)果,便于任課教師了解學(xué)生的學(xué)習(xí)進(jìn)展情況。
4) 基礎(chǔ)信息管理。該模塊完成包括學(xué)生信息、教師信息、組織機(jī)構(gòu)、碼表、日志綜合查詢、標(biāo)簽等子模塊的管理功能,實現(xiàn)對基礎(chǔ)信息的維護(hù)和記錄。
5" 重難點業(yè)務(wù)及技術(shù)實現(xiàn)
5.1" PK對戰(zhàn)連接
平臺中存在模型數(shù)量較大、復(fù)雜場景加載以及PK對戰(zhàn)多用戶連接等情況,容易出現(xiàn)畫面卡頓、宕機(jī)等問題。為解決此類狀況,需要開啟協(xié)程并進(jìn)行異步加載,本文以PK對戰(zhàn)連接的解決為例,主要通過Unity的協(xié)程實現(xiàn)與其他用戶的通信。Unity中的Coroutine可以由程序調(diào)用,但是一經(jīng)啟動后除非調(diào)用stop()方法,否則將一直執(zhí)行,平臺利用這一特性實現(xiàn)與用戶PK對戰(zhàn)連接建立,也可以取消此行為,以達(dá)到實時對戰(zhàn)和節(jié)省資源的目的。
PK對戰(zhàn)連接的具體實現(xiàn)過程如下。
1) 點擊“隨機(jī)匹配”按鈕觸發(fā)連接事件,通過協(xié)程每秒訪問一次匹配函數(shù)。
2) 若匹配未成功,則將繼續(xù)執(zhí)行該協(xié)程訪問匹配;若匹配成功,則將停止執(zhí)行該協(xié)程,繼續(xù)執(zhí)行后端返回的數(shù)據(jù)操作。
核心代碼如下。
function PkRequest(): //進(jìn)入循環(huán)等待與其他PK用戶的連接
while True:
//傳入該用戶對應(yīng)的id,與其他正在進(jìn)行匹配的用戶進(jìn)行連接
LobbyMedViewCtr.instance.cs_match(LoginViewCtr.instance.Model.mPid)
//等待1 s
wait for 1 s
function StopPkRequest():
if instance.Model.InvitedCheckCoroutine is not 1:
//獲取MonoBehaviourEx組件
monoBehaviourExComponent =
GetMonoBehaviourExComponent(LobbyMedViewCtr.instance.Model.PKRequest)
//調(diào)用組件上的StopCoroutine方法,結(jié)束PK請求的協(xié)程操作,之后進(jìn)入PK對戰(zhàn)界面
monoBehaviourExComponent.StopCoroutine(LobbyMedViewCtr.instance.Model.InvitedCheckCoroutine)
在PK模塊的實施中,平臺引入?yún)f(xié)程以監(jiān)測其他用戶是否接收到匹配邀請。用戶點擊“取消匹配”,系統(tǒng)會終止協(xié)程執(zhí)行。一旦匹配成功,系統(tǒng)也將關(guān)閉協(xié)程,并引導(dǎo)用戶進(jìn)入PK答題界面;反之,若匹配未成功,系統(tǒng)將定期執(zhí)行檢查函數(shù)直至連接成功或退出連接。
5.2" 答題練習(xí)
平臺題目相關(guān)詳情全部持久化在數(shù)據(jù)庫,而Unity框架對數(shù)據(jù)的獲取并不敏感。因此,通過構(gòu)建專門的服務(wù)通信接口,實現(xiàn)題目相關(guān)信息的傳輸至關(guān)重要。平臺設(shè)計了一種接口服務(wù)構(gòu)件,用于獲取題目信息。相關(guān)題目數(shù)據(jù)存儲在MVC架構(gòu)的Model層,以確保系統(tǒng)的數(shù)據(jù)模型層次清晰且有序。在前端展示題目數(shù)據(jù)時,直接從Model層中選取對應(yīng)數(shù)據(jù),節(jié)約查詢時間的同時提高響應(yīng)速度。例如,在答題過程中,通過協(xié)程實現(xiàn)了答題倒計時功能,該機(jī)制通過在主程序執(zhí)行的同時運(yùn)行倒計時邏輯代碼,實現(xiàn)了對答題時間的靈活控制,提高了系統(tǒng)的實時性,優(yōu)化了用戶體驗。
部分核心代碼如下。
function CountDown():
//設(shè)置答題的時間為10 min
setUITimeText(\"10 : 00\")
//建一個新對象GameObject
newObject = createNewGameObject()
PracticeMedViewCtr.instance.Model.Timer = newObject
//添加MonoBehaviourEx組件,準(zhǔn)備打開協(xié)程進(jìn)行倒計時
addMonoBehaviourExComponentTo(PracticeMedViewCtr.instance.Model.Timer)
timerComponent = getMonoBehaviourExComponent
(PracticeMedViewCtr.instance.Model.Timer)
//調(diào)用StartCoroutine方法,開始倒計時
PracticeMedViewCtr.instance.Model.TimerCoroutine =
timerComponent.StartCoroutine(CountTime)
為了記錄用戶的答題歷史,平臺將已經(jīng)回答過的題目信息包括用戶選擇的答案存儲在本地。該設(shè)計使得用戶能夠隨時查看已經(jīng)完成的題目信息,方便用戶查閱完整的學(xué)習(xí)記錄。這種設(shè)計充分體現(xiàn)了對用戶需求的理解,提供了更加個性化和智能化的學(xué)習(xí)體驗。圖10所示為已做過的題目可返回查看詳情頁面。
5.3" UI適配
由于平臺基于標(biāo)準(zhǔn)分辨率1 920×1 080制作,而移動端設(shè)備的分辨率根據(jù)屏幕大小存在多種情況,因此屏幕適配和布局在應(yīng)用過程中存在一定的問題。
平臺采用基于設(shè)備分辨率動態(tài)自適應(yīng)調(diào)整畫面顯示內(nèi)容和UI布局的多分辨率適配技術(shù),具體實現(xiàn)步驟如下。
1) 將Canvas的Canvas Scalar屬性設(shè)置為“Scale With Screen Size”。
2) 設(shè)定基準(zhǔn)分辨率和參考分辨率,將所有頁面UI元素按照基準(zhǔn)分辨率設(shè)計。
3) 根據(jù)當(dāng)前設(shè)備的分辨率與參考分辨率(1 920×1 080)之間的比例關(guān)系,對UI元素進(jìn)行縮放和位置調(diào)整。
部分核心代碼如下。
Function AdaptLobbyMed() :
//找到名為\"Study\"的UI面板,設(shè)置其面板大小,用來適配不同的分辨率
study = ui_fangyaolihePanel.Find(\"Study\").GetComponentlt;RectTransformgt;()
//設(shè)置面板的水平大小為屏幕寬度減去80
study.SetSizeWithCurrentAnchors(RectTransform.
Axis.Horizontal, Screen.width -80)
//計算面板的垂直大小,使其與屏幕高度相適應(yīng)
height_study = Floor(488/1 920 * Screen.height)
study.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, height_study)
//獲取面板下名為\"content\"的子物體,設(shè)置其水平大小和垂直大小
studyContent = ui_fangyaolihePanel.Find(\"Study/content\").GetComponentlt;RectTransformgt;()
//設(shè)置面板的內(nèi)容區(qū)域水平大小為屏幕寬度減去120
studyContent.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, Screen.width -120)
//計算面板內(nèi)容區(qū)域的垂直大小,使其與屏幕高度相適應(yīng)
height_studycontent = Floor(364/1 920 * Screen.height)
studyContent.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, height_studycontent)
分辨率調(diào)整公式如下:
[S=RB]
式中:R表示參考分辨率;B 表示基準(zhǔn)分辨率;S表示UI元素縮放比例。通過將參考分辨率和基準(zhǔn)分辨率替換為具體的數(shù)值或變量,可以計算出UI元素的縮放比例。在非標(biāo)準(zhǔn)分辨率下適配界面如圖11a)所示,適配后的界面如圖11b)所示。
6" 結(jié)" 語
本文針對方劑學(xué)教學(xué)中存在的知識點眾多、識記量大、學(xué)生興趣度不高和日常練習(xí)困難等問題,設(shè)計了一種方藥離合實訓(xùn)平臺。該平臺是信息技術(shù)與中醫(yī)藥融合發(fā)展的有益嘗試。該平臺不僅通過圖文形式生動展示方劑學(xué)有關(guān)章節(jié)知識,同時提供了練習(xí)測試、在線PK和標(biāo)簽筆記等便捷功能,初步滿足當(dāng)前用戶的需求。但是,隨著平臺的持續(xù)應(yīng)用,引入推薦算法識別用戶使用習(xí)慣、重難點題目和易錯題等都可以為下一步教學(xué)改革優(yōu)化提供借鑒和思路,也能為用戶提供更加有針對性和個性化的學(xué)習(xí)路徑。
注:本文通訊作者為魏培陽。
參考文獻(xiàn)
[1] 葉含笑.互聯(lián)網(wǎng)背景下中醫(yī)藥學(xué)科教學(xué)與信息技術(shù)深度融合的研究[J].浙江中醫(yī)藥大學(xué)學(xué)報,2021,45(2):198?201.
[2] 周文靜,王永輝,閆潤紅.互聯(lián)網(wǎng)時代下現(xiàn)代教學(xué)與傳統(tǒng)教學(xué)方法在方劑學(xué)教學(xué)中的應(yīng)用比較[J].光明中醫(yī),2020,35(9):1421?1422.
[3] 李璐,焦楠,袁娜.近十年中醫(yī)學(xué)課程教學(xué)方法研究熱點與趨勢分析[J].中醫(yī)教育,2023,42(3):35?40.
[4] 魏培陽,史曉雨,周杰三,等.基于實時同步和全文搜索技術(shù)的方劑學(xué)多維實訓(xùn)平臺[J].現(xiàn)代電子技術(shù),2024,47(2):67?73.
[5] 么元超,謝鳴.歷版《方劑學(xué)》教材及其編寫體例考察[J].安徽中醫(yī)藥大學(xué)學(xué)報,2014,33(4):93?96.
[6] 粟栗,鄒元君,趙書鋒.中醫(yī)方劑學(xué)在線學(xué)習(xí)平臺的探索與體會[J].浙江中醫(yī)藥大學(xué)學(xué)報,2010,34(1):110?111.
[7] 王寶瑩,李泊寧.基于android系統(tǒng)的中藥方劑學(xué)的系統(tǒng)設(shè)計[J].數(shù)字通信世界,2019(8):102.
[8] WEI P, SHI X, ZHANG G. A highly accurate data synchronization and full?text search algorithm for Canal and Elasticsearch [C]// 2023 IEEE International Conference on Networking, Sensing and Control. [S.l.]: IEEE, 2023: 1?6.
[9] 王璐宇,吳謨楠,張洪恕,等.基于橙光游戲平臺的中醫(yī)藥手機(jī)游戲“百草大師”的設(shè)計研究[J].科技視界,2017(9):50?51.
[10] 魏培陽,亓祺,杜明松,等.面向中醫(yī)藥典籍的閱讀對照系統(tǒng)設(shè)計與實現(xiàn)[J].現(xiàn)代電子技術(shù),2023,46(16):85?90.
[11] 周笑盈.虛擬現(xiàn)實技術(shù)在古籍智慧化閱讀推廣中的應(yīng)用與實踐[J].農(nóng)業(yè)圖書情報學(xué)報,2022,34(8):79?91.
[12] 蘇哲.衛(wèi)生監(jiān)督虛擬仿真訓(xùn)練系統(tǒng)的設(shè)計與實現(xiàn)[D].武漢:華中科技大學(xué),2019.
[13] 尹曉卿.基于Unity3D的MMO移動游戲關(guān)鍵技術(shù)設(shè)計與實現(xiàn)[D].成都:電子科技大學(xué),2019.
[14] 朱日楠,王彪,楊姍姍,等.Simulink/Unity3D聯(lián)合的飛行控制仿真教學(xué)系統(tǒng)開發(fā)[J].實驗室研究與探索,2023,42(11):187?191.
[15] 朱濤,楊昊倫.基于Unity3D的虛擬樣板房體驗系統(tǒng)的設(shè)計與實現(xiàn)[J].現(xiàn)代計算機(jī)(專業(yè)版),2018(34):61?64.
[16] 吳悠,陳亦欣,胡曦.基于Unity平臺的多操作系統(tǒng)共同開發(fā)技術(shù)研究及實現(xiàn)[J].計算機(jī)應(yīng)用研究,2020,37(z1):237?239.