用unity開發教學輔助軟件---幼兒繪本英語拼讀

記錄完整項目的制作,借鑒了大佬@被代碼折磨的狗子 “unity創建《找不同》游戲 圖片編輯器”一文。

(建議通過目錄閱讀本文哦~)

項目演示:

幼兒英語教輔

幼兒英語繪本教學游戲整體架構

游戲開發中設計的整體框架

游戲的總體功能框架如下圖所示。

????????主要先進入字母選擇界面,選擇一個需要學習的字母,然后進入到對應字母的選擇模塊界面,學生們先通過其中的視頻了解一些單詞和故事情節,然后老師帶領學生體驗各個游戲模塊,自主決定教學順序。

?????????以字母a為例,視頻中介紹了小螞蟻(ant)Andy喜歡藝術(art),在畫布上畫蘋果(apple),在畫布上畫宇航員(astronaut),在畫布上畫自己(Andy?ant)的故事情節。找不同、畫畫、測試、迷宮、唱歌的游戲就圍繞這個主題展開。如下圖所示,就是字母a的紙質繪本。

? 目的:通過Unity3D引擎、C#腳本編程、游戲化設計,制作出更加有趣、有及時反饋的教學游戲和承載繪本內容、視頻的平臺。

幼兒英語繪本教學游戲的具體設計與實現

選擇字母界面導航的設計與實現

選擇字母界面與總體功能設計

實現的是通過不同的按鈕點擊進入不同的界面,界面如下圖所示。

通過Grid?Layout?Group組件實現每一行按鈕的與左右、上下的間距(Space)設置和按鈕的大小(Cell?Size)設置,然后通過通過Scroll?Rect組件去控制所有按鈕的所在區域,從而實現了規整的布局,如下圖所示。

選擇進入功能實現

實現的功能是通過UI素材放在Unity3D資源目錄(Resource)下,動態生成各個按鈕的圖片,點擊按鈕后進入各自字母主題的界面。

新建CustomsPassData類存儲每個按鈕的圖片,按鈕圖片如下圖所示,通過ScriptableObject類來數據的永久儲存,創建DataConfig,如下圖所示,在Unity3D的主界面進行賦值的操作。

通過設計對應的數據類型來存儲圖片和相關數據(區域位置、大小以及模式參數等),代碼設計如下圖所示。

同時設計按鈕的腳本CustomsPassItem類中的InitData()函數用于生成按鈕的數據(包括如何跳轉、代表哪個字母),代碼設計如下圖所示。

在SelectCustomsPassPanel(選擇字母腳本)中調用CustomsPassItem類的InitData()函數,同時應用創建的DataConfig中存儲的數據(在Unity3D平臺的開發界面進行賦值)、這樣就實現了自動獲取按鈕圖片和字母內容,動態生成排列好的按鈕,當按鈕按下時就調用OnClick()函數,進入下一個界面(選擇模塊界面),代碼設計如下圖所示。

選擇模塊界面導航的設計與實現

選擇模塊界面和總體功能設計

主要有5個游戲模塊(點擊進入不同的游戲)、視頻模塊(觀看預設的教學故事)和一個標題(顯示當前學習的字母和主題),界面設計如下圖所示。

也是通過Grid?Layout?Group組件實現的規整分布,如下圖所示。

各種游戲進入按鈕功能的實現

實現的功能是當點擊按鈕時,執行類似于顯示界面、打開音樂、獲取對應內容的程序。主要是通過為每一個按鈕綁定一個事件監聽來實現的,如下圖所示。

同時在每個監聽事件里執行類似于顯示界面、打開音樂、獲取對應內容的程序,代碼設計如下圖所示。

視頻播放器內容更新和播放功能實現

實現的功能有可以根據所選字母主題動態更新視頻內容,然后實現了基礎的視頻放大縮小、播放、暫停、從頭觀看的功能。動態更新視頻內容的功能實現主要是設計類似于文章前面提到的dataconfig,設計一個存儲視頻封面、視頻播放內容等元素的類(videoandbookData),代碼設計如下圖所示。

新建videoandbookData類存儲每個按鈕的圖片,通過ScriptableObject類來數據的永久儲存,創建videoandbookDataconfig,在Unity3D平臺的開發界面中填入數據,如下圖所示。

同時選擇字母界面的各個字母按鈕上了掛載監聽事件(掛載了CustomsPassItem腳本,使用onClick()函數進行監聽),當按鈕被按下時,就會根據按鈕的下標來生成對應的播放器內容,代碼設計如下圖所示。

再通過InitvideoandbookData()函數,動態修改播放的視頻和視頻封面等元素,代碼設計如下圖所示。

而播放、暫停、從頭開始播放的功能,是通過videoPlayer腳本中設計的PlayOnClick()、pause()、finishOnClick()函數去實現的。代碼設計如圖所示。

最大化/最小化功能設計是通過設計image_Controller腳本,調用DG.Tweening動畫插件去實現放大縮小的界面效果,核心代碼如圖所示。

最后在界面中給四個界面中的按鈕(GameObject父物體下的4個子物體)設置按下的監聽事件,就能實現相應的功能。

找不同界面導航的設計與實現

找不同界面和總體功能設計

設計了兩張模式,類似于對比兩張圖的不同點或尋找一張圖片中不同的元素,通過鼠標點擊,可以選擇,同時設計了倒計時的機制,讓該過程更具趣味性,界面設計如圖所示。

找不同界面可視化編輯器設計

實現的功能如下:

①在對比兩張圖片不同處的游戲機制中,可以選擇添加節點,增加需要找出的不同數量,解決了數量不同也可以整體設計的效果。同時對每一個不同點(Element)可以設置它在畫布中的X、Y坐標和長度與寬度,如下圖所示。

②針對在一張圖片中找不同的游戲機制中,也是可以添加節點和設置節點的坐標和大小,如下圖所示。

找不同(find?difference)界面比較復雜,有對比兩張圖片找出不同(同時不同處的數量也有區別)的模式,也有在一張圖片里找出相同或者不同的元素(一個或者多個)的模式,因此需要設計一個整體的架構,能做到可視化實現每個字母對應找不同界面的資源快速替換,同時規定它的游戲機制。

設計CustomsPassDataConfigEditer腳本,設計可視化編譯器,核心界面設計代碼如下圖所示:

CustomsPassDataConfigEditer核心代碼

?編輯器界面設計代碼

同時在數據初始化時,設計兩行代碼,第一行代碼實現了對原本資源中數據讀取,同時在數據初始化時調用SelectCustomsPassData()函數,如下圖程序所示。

SelectCustomsPassData()函數設計如下圖所示,主要是修改當前選擇的關卡,并獲取數據進行展示,主要是針對每一個字母對應的圖片和模式進行修改和調整,其中在代碼的最后調用了CreateAreaItem( )函數,通過CreateAreaItem( )函數進行具體數據的修改,例如每一個找不同節點的X、Y坐標和長度與寬度。

同時在之前提到的DataConfig類中,選擇MainPattern模式,可以決定它的游戲機制是在一張圖片中找不同還是兩張圖片對比找不同,如下圖所示。

找不同游戲機制的具體實現

實現的主要功能,當選擇對位置時,就會顯示出對應的紅框,把不同處框出來,如果尋找錯誤,就會有錯誤的提示,在規定時間內找到要求數量的不同點才算勝利。

核心代碼設計如下圖所示,主要是通過InitData()函數生成找不同的點位,同時在按鈕上掛載ByClicking()監聽事件,判斷是否找對了,然后通過FindAreaItem()函數,在兩個圖片上生成紅色的框框。

?InitData()ByClicking()代碼設計

?FindAreaItem()代碼設計

畫畫界面導航的設計與實現

畫畫界面和總體功能設計

界面主要分為選色區和繪畫區,可以在選色區選擇畫筆的顏色,然后可以填充到某個封閉的白色區域,自己DIY一個卡通角色,界面如下圖所示。

5.4.2選擇區功能實現

主要是在選區色塊(Color)上設置監聽事件,當按下時就調用腳本去轉化畫筆(Brush)的顏色,游戲對象屬性如下圖所示。

繪畫區功能實現

? 繪畫功能的實現主要是通過根據畫筆現在的顏色改變每個區域圖片的渲染器顏色實現的,設計的區域如圖所示。

空白區域設計展示案例

測試界面導航的設計與實現

測試界面和總體功能的設計

????????設計對應字母主題的題目(是否包含這個字母的發音),涉及到的圖片都是在對應的字母故事視頻出現過的,根據題干選擇對應的圖片,會有對應的反饋,但每道題的選項數量和正確選項數量都可能會有不一致,界面如下圖所示。

測試界面可視化編輯器設計

????????實現的功能大致是選擇對應的關卡,修改題目的題干、選項的圖片和發音以及正確選項的下標,編輯器設計如下圖所示。

編譯器界面設計代碼跟找不同界面編輯器的代碼有些類似,也是涉及到資源的動態讀取、數據的展示、關卡的修改等,相關機制核心代碼如下圖所示。

然后利用TestPassDataConfig類的對象中實現資源動態生成的效果,存儲如下圖所示。

功能類似于上文提及的DataConfig類,主要是通過ScriptableObject來實現數據的永久存儲,核心代碼如下圖所示。

測試具體功能實現

實現的功能是點擊對應的按鈕有相應的反饋(正確或者錯誤、發出什么讀音、播放什么樣的動畫),核心代碼如下圖所示。

迷宮游戲界面導航的設計與實現

迷宮游戲界面和總體功能的設計

????????該界面主要是由主角、字母和終點、地圖四個元素所構成,游戲模式是拖動主角走過迷宮達到終點,在教學過程中會在每次碰到字母時,帶領同學們一起去跟讀,每個字母對應的迷宮游戲界面差別比較大,不同字母界面設計如下圖所示。

迷宮游戲界面的具體功能實現

①控制主角移動,當人物被拖動且不接觸迷宮邊緣時,就可以運動,主要是通過檢測是否長按和如圖5-38所示的MoveTo()函數進行控制的。

②控制主角與字母、障礙物、終點的交互,通過給不同游戲對象打上標簽(tag)來區別主角是跟什么對象發生了碰撞,從而去調用對應的事件,核心代碼如下圖所示。

唱歌界面導航的設計與實現

唱歌界面和總體功能的設計

主要就是顯示對應字母的歌曲內容和播放相應的音頻,界面設計如下圖所示。

唱歌界面編輯器的設計

主要包括了兩種圖片、文字的替換,ChantDataConfig類設計如下圖所示。

也是基于ScriptableObject實現數據的永久存儲,同時包括文字、圖片、間距的參數,核心代碼如下圖所示。

唱歌界面功能的具體實現

主要就是通過getIndex()函數獲取當前字母主題的下標,然后通過CreatContent()函數根據下標設置相應的資源,給按鈕掛載播放音樂的事件(PlayMusic()函數),核心代碼如下圖所示。

匹配單詞界面導航的設計與實現

匹配單詞界面和總體功能設計

?這個模塊的作用主要體現在教學過程中,老師可以讓學生先去找對應單詞的東西在圖片的哪個位置,然后老師點擊具體的單詞,所對應東西的顏色就加深,如下圖5-44所示,tea單詞被點擊,圖片中杯子顏色被加深。

匹配單詞界面具體功能實現

主要就是通過點擊左側的單詞按鈕,就能產生對應的動畫效果,是通過在按鈕上掛載監聽事件、調用動畫插件Dotween來實現的,核心代碼如圖所示。

界面適配率的設計

為了滿足適配不同電腦的分辨率不同,需要讓界面有自適應的功能。需要實時獲取運行這個軟件所在電腦的分辨率,然后保持界面原有的長寬比,進行總體大小的放大或者縮小。核心代碼如圖5-46所示:

屏幕大小調整的代碼設計

希望這個項目的思路對大家有所幫助~

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/90612.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/90612.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/90612.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

《Java 程序設計》第 5 章 - 數組詳解

引言在 Java 編程中,數組是一種基礎且重要的數據結構,它允許我們將多個相同類型的元素存儲在一個連續的內存空間中,通過索引快速訪問。掌握數組的使用是學習 Java 集合框架、算法等高級知識的基礎。本章將從數組的創建、使用開始,…

基于Spring Boot的可盈保險合同管理系統的設計與實現(源碼+論文)

一、相關技術 技術/工具描述SSM框架在JavaWeb開發中,SSM框架(Spring Spring MVC MyBatis)是流行的選擇。它既沒有SSH框架的臃腫,也沒有SpringMVC的簡化,屬于中間級別,更靈活且易于編寫和理解。MyBatis框…

??XSLT:XML轉換的“魔法棒”?

大家好!今天我們來聊聊 ??XSLT??(Extensible Stylesheet Language Transformations),一種用于轉換和呈現XML文檔的神奇工具。如果你曾需要將一堆枯燥的XML數據變成精美的HTML網頁、PDF報告,或其他XML格式&#xff…

面試實戰,問題十,如何保證系統在超過設計訪問量時仍能正常運行,怎么回答

如何保證系統在超過設計訪問量時仍能正常運行 在Java面試中,當被問及如何保證系統在訪問量激增(例如從100萬用戶增長到200萬)時仍能穩定運行,這是一個考察高并發、可擴展性和容錯能力的關鍵問題。核心在于通過架構設計、性能優化和…

DMDSC安裝部署教程

一、環境準備 虛擬機準備,添加共享磁盤 (1)共享存儲規劃 裸設備名 容量 用途 /dev/sdb 10 G /dev/asmdata0(數據磁盤) /dev/sdc 5 G /dev/asmdcr(DCR 磁盤) /dev/sdd 5 G /dev/asm…

半導體 CIM(計算機集成制造)系統

半導體CIM(Computer Integrated Manufacturing,計算機集成制造)系統是半導體制造的“神經中樞”,通過整合硬件設備、軟件系統和數據流轉,實現從訂單到成品的全流程自動化、信息化和智能化管理。其工作流程高度貼合半導…

AI是否會終結IT職業?深度剖析IT行業的“涌現”與重構

引言:一場不可回避的技術審判在ChatGPT、Copilot、Claude、Sora 等AI技術密集爆發的今天,IT行業首當其沖地感受到這股浪潮帶來的“智力替代壓力”。尤其是以開發、測試、運維、分析為主的崗位,逐漸被AI所“滲透”。于是,問題擺在每…

mid360連接機載電腦,遠程桌面連接不上的情況

為什么會出現這種情況呢,一開始我以為是雷達使用的網線,使用的是和網絡同樣的口,是因為機載電腦帶寬不足,所以導致的,但是后面發現不管是哪一個機載電腦都會斷開連接,后面了解得知,并不是連接的…

目標檢測系列(六)labelstudio實現自動化標注

一、啟用圖片文件服務用Nginx啟用圖片服務,配置好映射路徑。新建圖片文件夾,將文件夾下的圖片路徑存儲到txt文件中訪問地址(文件夾):http://112.12.19.122:8081/urls/ml-backend-test/進入labelstudio將txt文件路徑填入…

從零開始大模型之編碼注意力機制

從零開始大模型之編碼注意力機制1 長序列建模中的問題2 使用注意力機制捕捉數據依賴關系3 自注意力機制4 實現帶可訓練權重的自注意力機制5 利用因果注意力隱藏未來詞匯6 將單頭注意力擴展到多頭注意力7 Pytorch附錄7.1 torch.nn.Linear多頭掩碼可訓練權重的注意力機制。為什么…

小架構step系列26:Spring提供的validator

1 概述對于Web服務,需要對請求的參數進行校驗,可以對不合法的參數進行提示,提高用戶體驗。也可以防止有人惡意用一些非法的參數對網站造成破壞。如果是對每個參數都寫一段代碼來判斷值是否合法,那校驗的代碼就很多,也很…

0編程基礎:用TRAE寫出了會蹦跳躲避散發炫光的貪吃蛇小游戲

在某個深夜的代碼深淵里,一個從未寫過print("Hello World")的小白開發者,竟用自然語言指令讓貪吃蛇跳起了"光棱華爾茲"——蛇身折射出彩虹軌跡,食物像星艦般自動規避追擊,甚至實現了四頭蛇的"量子糾纏式…

在Word和WPS文字中要同時查看和編輯一個文檔的兩個地方?拆分窗口

如果要在Word或WPS文字的長文檔中同時查看兩部同步的地方(文檔位置),來回跳轉和滾動費時費力,使用拆分窗口的功能即可搞定。將窗口一分為二,上下對照非常方便。一、拆分窗口的路徑Word和WPS基本一樣,就是菜…

Windows系統下安裝mujoco環境的教程【原創】

在學習Mujoco仿真的過程中,我先前是在linux系統下進行的研究與學習,今天來試試看在windows系統中安裝mujoco仿真環境。 先前在linux中的一些關于mujoco學習記錄的博客:Mujoco仿真【xml文件的學習 3】_mujoco打開xml文件-CSDN博客 下面開始wi…

CSS中篇

#Flex布局#1、什么是flex布局?flex 布局,全稱彈性布局(Flexible Box Layout),是 CSS3 中引入的一種新的布局模式。它主要通過給容器設置相關屬性,來控制容器內部子元素的排列方式。相比傳統的浮動布局和定位…

《云計算藍皮書 2025 》發布:云計算加速成為智能時代核心引擎

近日,中國信息通信研究院發布了《云計算藍皮書(2025 年)》,全面剖析了云計算領域的發展現狀與未來趨勢。在人工智能蓬勃發展的當下,云計算正從基礎資源供給向智能時代的核心引擎加速轉變,成為重塑全球數字競…

excel刪除重復項場景

問題描述 問題描述:因為表格中存在多條相同的數據,我現在excel有一列,值為#N/A 。另外有列叫做藥品名稱、規格、廠家 我要刪除值為 #N/A,并且 藥品名稱、規格、廠家相等的數據,那條相同的刪掉,只保留一條,…

Vue 3 與 Element Plus 中的 /deep/ 選擇器問題

Vue 3 與 Element Plus 中的 /deep/ 選擇器問題 在 Vue3 中使用 Element Plus 組件時,使用 ::v-deep或 :deep()的場景取決于 ??樣式作用域?? 和 ??選擇器目標??。以下是關鍵區別:

2025暑期—06神經網絡-常見網絡

六個濾波核提取特征Maps5X5 卷積核,1個閾值 6個元素,卷積后兩邊各少兩個,28*28像素 又有6個卷積核,所以有122304個連接,連接數不多是因為很多都是公用參數的。池化是參數池化,和當前平均最大不一樣。編程14…

硅基計劃3.0 學習總結 叁 棧和隊列

文章目錄一、棧1. 模擬實現棧2. 小試牛刀1. 判斷一個棧的出棧順序是否為題目給定情況2. 括號匹配3. 逆波蘭表達式求值4. 求最小棧元素3. 單鏈表實現棧二、隊列1. 官方隊列類Queue2. 雙向鏈表模擬實現Queue類3. 順序表模擬實現Queue類4. 雙端隊列5. 隊列實現棧6. 棧實現隊列一、…