劉安平 邵文冕 苑鵬濤 杜林娟 梁志強



摘? 要 采用虛擬現實技術,通過Unity 3D軟件構建虛擬世界,開發電氣控制虛擬實踐,并發布到Android游戲平臺上。3D教學課件的應用,取得很好的實踐教學效果。
關鍵詞 Unity 3D;電氣控制虛擬實踐;Android游戲平臺;3D教學課件
中圖分類號:TP391.9? ? 文獻標識碼:B
文章編號:1671-489X(2020)02-0030-03
Development of Electric Control Virtual Practice on Android Game Platform//LIU Anping, SHAO Wenmian, YUAN Pengtao, DU Linjuan, LIANG Zhiqiang
Abstract This paper develops electrical control virtual practice by?adopting virtual reality technology and building virtual world through?Unity 3D, and releases it to Android game platform. The application of 3D teaching courseware has achieved good practical teaching effect.
Key words Unity 3D; electrical control virtual practice; Android game platform; 3D teaching courseware
1 課題解決的具體問題
Windows平臺的電氣工程虛擬實踐,每個訓練室只有一臺電腦,在實踐教學應用過程中,不能全方位為學生提供服務;如果將虛擬實踐平臺安裝在手機游戲平臺上,每個學生都會有自己的虛擬實踐平臺。學生首先在Android手機游戲平臺上進行電氣控制虛擬實踐,對器件布置、線路連接、電路檢測和送電試車,有了整體認知和掌握,然后進行真正的電氣控制實踐操作,教學效果會更好。
筆者研發的Windows平臺的電氣工程虛擬實踐,在一年的實踐教學應用中進行了不斷完善和更新,本次教研項目就是在此基礎上進行開發的。在Android游戲平臺實現電氣工程虛擬實踐,模型建立和腳本語言文件編寫等前期準備工作已經基本完成;登錄窗口建立、游戲關卡設計、評分系統、糾錯提示以及手機屏幕的自適應調整,是課題解決的具體問題。
2 電氣控制虛擬實踐
電氣控制訓練課程內容是三相交流異步電動機控制線路安裝實踐,訓練項目有自鎖控制線路、正反轉控制線路、自動往返控制線路和順序控制線路等。下面以自鎖控制線路為例,說明Android游戲平臺實現電氣控制虛擬實踐的過程。
登錄窗口設置? 電氣控制虛擬實踐的登錄窗口見圖1,學生輸入班級、姓名、學號等個人信息后,點擊“開始”按鈕,若是某一信息沒有填寫,會提示“信息不全”;信息填寫完整后,點擊“開始”,進入電氣控制虛擬實踐第一關。計時器在Android虛擬實踐平臺打開時,開始計時。
登錄窗口的交互控制C#腳本語言部分語句:
public void begin() {
if (banji.text==""||xingming .text ==""||xuehao.text==""){
text_ts .text="信息不全!";
return;}
pan00.SetActive (false);? ? //登錄窗口面板隱藏
pan11.SetActive (true);? ? //第一關卡面板顯示
}
游戲關卡1:器件布置? 將電氣控制虛擬實踐設計成四個游戲關卡,游戲關卡1的開始界面見圖2,點擊“器件布置圖”,顯示器件布置在虛擬實踐臺上的具體位置;點擊器件名稱,再按動方向按鈕,實現器件布置;提示信息會顯示器件移動方向的對錯,或是否達到指定位置;把器件移動到指定位置附近,器件會自動移動到指定位置;按下
“聚焦”按鈕,攝像機會聚焦到指定元器件,便于清晰觀看元器件的外形和位置;學生得分為滿分,顯示“目標完
成”;按動“下一關”按鈕,進入第二關卡。
關卡1的交互控制C#腳本語言部分語句:
void Update ()? {
//用Qijian分別替代5個元器件
Ax = Qijian.transform.position.x;
Az = Qijian.transform.position.z;
if (j1+j2 ==0){? ? //移動按鈕抬起
if (t1) { text_ts.text = "選擇QF";
} else if (t2) { text_ts.text = "選擇KM";
} else if (t3) { text_ts.text = "選擇FR";
} else if (t4) { ext_ts.text = "選擇按鈕";
} else if (t5) { text_ts.text = "選擇 M";
} else { text_ts.text = "";? }
}else if(!t1 & !t2 & !t3 & !t4 & !t5){
text_ts.text = "請選擇器件";
}else {? ? //判斷元器件移動方向是否正確
if ((Ax * j1 > 1) || (Az * j2 > 1)) {
text_ts.text = “No”;
} else if (((Ax * j1 < -1) || (Az * j2 < -1))) {
text_ts.text = “Yes”;
} else { text_ts.text = “OK”;? }
}? ? //左右移動
if (Ax > 0.5f || Ax < -0.5f) {
Qijian.transform.position += new Vector3 (j1 * 20 * Time.
deltaTime, 0, 0);
}? ? //前后移動
if (Az > 0.5f || Az < -0.5f) {
Qijian.transform.position += new Vector3 (0, 0, j2 * 20 *
Time.deltaTime);
}? ? ? //移動到指定位置
if ((Ax > -0.51f & Ax < 0.51f) & (Az > -0.51f & Az < 0.51f)) {
Qijian.transform.position = new Vector3 (0, 0, 0);? }
}
游戲關卡2:線路連接? 在游戲關卡2的開始界面,點擊“線路連接圖”,顯示導線名稱在線路連接圖中的具體位置;點擊導線名稱,再移動方向按鈕,完成線路連接;提示信息會顯示導線移動方向的對錯,或是否達到指定位置。再次點擊導線名稱,會使相機聚焦到導線應該連接的具體位置。關卡2的交互控制C#腳本語言和關卡1基本相同,這里不再闡述。
游戲關卡3:斷電檢測? 在游戲關卡3的開始界面,點擊“檢測方法”按鈕,顯示電路檢測步驟的文字說明;主電路檢測時,點擊“按下KM”,再依次按下“RU-V”“RU-W”“RV-W”,萬用表的表筆出現并觸碰負載開關下面的對應接線柱,顯示主電路連接正確時的測量數據;控制電路檢測時,點擊“按下SB1”,再依次按下“RU-V”“RU-W”“RV-W”,會顯示控制電路連接正確時的數據;沒有按下交流接觸器KM或正轉啟動按鈕SB1,測量時就會有信息提示“請按下KM或SB1”;學生得分為滿分,提示“目標完成”;按動“下一關”按鈕,進入第四關卡。
關卡3的交互控制C#腳本語言部分語句:
void Update () {
if(t1 &? (t3 || t4)){? ? //測主電路的UV、UW
p163.SetActive (true);
p086.SetActive (false);
p153.SetActive (false);
}else if (t1 & t5){? ? //測主電路的VW
p163.SetActive (false);
p086.SetActive (true);
p153.SetActive (false);
}else{ if (t2 & t5){? ? //測控制電路的VW
p163.SetActive (false);
p086.SetActive (false);
p153.SetActive (true);
}else{? ? //測控制電路的UV、UW
p163.SetActive (false);
p086.SetActive (false);
p153.SetActive (false); } }
}
游戲關卡4:送電試車? 游戲關卡4是電氣控制虛擬實踐的最后一關,開始界面見圖3。點擊“電氣原理圖”,學生可以分析自鎖控制線路的電路工作過程;依次點擊“QF1”“QF2”“SB1”和“SB2”,完成電氣控制虛擬實踐送電試車過程;沒有閉合電源開關和負載開關,按動按鈕時會有提示信息“開關沒有閉合”或“電動機沒有工作”;學生得分為滿分時,提示“闖關成功”,按“返回”按鈕,回到退出窗口,同時計時器停止工作。
關卡4的交互控制C#腳本語言部分語句:
void Update (){
if (t3){? ? //QF1、QF2閉合,按動啟動按鈕
km1dong.transform.localScale = new Vector3(1, 0.92f, 1);
m1z.transform.Rotate(-450* Time.deltaTime, 0,0,
Space.Self);
}else{? ? //按動停止按鈕,或QF1、QF2斷開
km1dong.transform.localScale = new Vector3(1,1, 1);
m1z.transform.Rotate(0, 0, 0, Space.Self);
}
}
退出窗口設置? 學生完成電氣控制虛擬實踐第四關后,返回到退出窗口。在退出窗口,直接顯示學生的個人信息、電氣控制虛擬實踐成績和計時時間;學生可以手機截圖把成績發到班級微信群里,由指導教師查看成績;按“退出”按鈕,退出電氣控制虛擬實踐桌面。
3 Android游戲平臺的轉化和相關設置
Unity 3D軟件輸出到Android平臺的切換? 依次點擊Unity 3D程序的菜單“File”“Build Settings”,進入游戲平臺切換菜單;依次點擊菜單選項“Android”“Swich Platform”,完成Android游戲平臺切換。能夠完成Android
游戲平臺切換的前提是,在Unity 3D軟件安裝時,必須勾選Android游戲平臺組件。
JDK、SDK開發工具安裝和相關設置? 要在Unity 3D游戲開發平臺發布安卓的apk程序,必須先安裝Java-JDK和Android-SDK這兩個工具。JDK是開發Java的庫及虛擬機包,SDK是開發Android應用程序的系統包[1]。
1)JDK組件下載網址為“www.oracle.com\”,搜索并下載安裝程序“jdk-8u231-windows-x64”,安裝路徑為“C:\Program Files\Java\”。
2)打開電腦的系統屬性面板,新建系統變量,變量名為“JAVA_HOME”,變量值為“C:\Program Files\Java\jdk1.8.0_231”;編輯系統變量,變量名為“Path”,添加變量值為“% JAVA_HOME %\bin;% JAVA_HOME %\jre\bin”;
新建系統變量,變量名為“CLASSPATH”;變量值為“% JAVA_
HOME %\ lib\dt.jar; % JAVA_HOME % \lib\tools.jar”。
3)SDK組件下載網址為“www.androiddevtools.cn\”,
找到并下載安裝程序“install_r24.4.1-windows”,安裝路徑為“D:\Program Files\SDK\”。程序安裝成功后,打開“SDK Manager.exe”,勾選“Android SDK Tools”“An-
droid SDK Platform-tools”“Android 10 (API 29)”“API
28.Q preview”“Android 9 (API 28)”“Android 8.1.0
(API 27)”“Android 8.0.0 (API 26)”“Android 7.1.1 (API 25)”“Android 7.0 (API 24)”“Android 6.0 (API 23)”,
再點擊“Install...Packages”,完成SDK安裝。
4)打開電腦的系統屬性面板,新建系統變量,變量名為“ANDROID_HOME”,變量值為“D:\Program Files\SDK”;
編輯系統變量,變量名為“Path”,添加變量值為“% ANDROID _ HOME %\ platform-tools; % ANDROID_HOME %\
tools”。
5)依次點擊Unity程序的菜單“Edit”“Preferences”
“External Tools”“Browse”,導入JDK和SDK安裝路徑。
6)打開Unity 3D的“Player Settings”面板,進行Android游戲平臺apk安裝包的包裝設計,包括公司名稱、安裝包名稱、圖標以及安卓游戲平臺的版本等。
手機屏幕的自適應調整? 手機屏幕自適應調整,主要是調整Unity3D軟件中UI組件中的畫布canvas的參數。
1)將UI Scale Mode選項中的Constant Pixel Size更改為Scale With Screen Size。
2)設置Reference Resolution(默認分辨率),橫屏設置為1280×720。
3)設置Match值,這里設置Match=0,橫屏顯示時根據確定的高度,適配不確定的顯示寬度。
4 結語
通過Android平臺的電氣控制虛擬實踐,學生在不消耗材料也沒有安全隱患的前提下,能夠快速掌握電氣控制線路的電路連接、斷電檢測和送電試車等實踐操作技能;3D教學課件在實踐教學中的應用,既降低了教學成本,又提高了學生學習興趣,取得很好的實踐教學效果。
參考文獻
[1]羅培羽.Unity3D網絡游戲實戰[M].北京:機械工業出版社,2016.