本篇要來把我們之前寫的小遊戲,改寫成android手機遊戲
Unity教學系列文章
如果你沒有安裝Android套件,要先去unity hub安裝
Unity底下有一個Android的標誌,就代表已經安裝了
本篇分三小節:
1. 飛機的移動改成觸控操作
2. 子彈射擊改成自動發射
3. 輸出APK檔的設定
1. 飛機的移動改成觸控操作
打開ShipControl.cs
在public GameObject Bullet;前面加上兩條斜線//
這樣子程式就不會被執行,你可以看到他變成不同的顏色
如果我們以後要改回來,只要把前面的斜線刪掉即可
同樣地
把void Update()底下,原來的控制程式
在原來的程式的頭尾分別加上/*和*/
如果程式有很多行,就用這個方式
然後void Update()底下加入
if (Input.GetTouch(0).phase == TouchPhase.Moved) //如果觸控的狀態是拖曳
{
float x = Input.touches[0].deltaPosition.x * Time.deltaTime * 0.5f;
float y = Input.touches[0].deltaPosition.y * Time.deltaTime * 0.5f;
transform.Translate(new Vector3(x, y, 0));
}
這樣就可以用觸控螢幕操作飛機了,不過要放手機裡才可以測試觸控
2. 子彈射擊改成自動發射
跟自動產生外星人一樣
打開GameFunction.cs
在前面加上
public float BulletTime; //子彈的時間
public GameObject Ship;
public GameObject Bullet;
在void Update()底下加入
BulletTime += Time.deltaTime;
if (BulletTime > 0.15f && IsPlaying == true) //每隔0.15秒產生一個子彈
{
Vector3 Bullet_pos = Ship.transform.position + new Vector3(0, 0.6f, 0);
Instantiate(Bullet, Bullet_pos, Ship.transform.rotation);
BulletTime = 0f;
}
好了之後存檔
然後Background底下就會出現Ship和Bullet的空格
把對應的物件拉進去後存檔,然後測試一下子彈會不會自動發射
3. 輸出APK檔的設定
File → Build Settings...
1. Add Open Scenes
2. 選Space,注意你要Build的Scene,不要選錯
3. 選Android
4. 按Player Settings...
為你的APP選個圖示
1. 選Player
2. 按Select
按下後會自動把Project裡有的圖片都叫出來
我選了外星人當Icon
關閉視窗,回到剛剛的畫面
按Switch Platform
安裝APP的細節請參考這篇文章
有兩個辦法:
1. 直接安裝到手機上
2. 建立APK檔,自行複製到手機上安裝
1. 直接安裝到手機上
手機開啟USB偵錯後,就能選你的手機了
如果沒看到可以按一下Refresh
然後按Build And Run,就直接在手機上執行了
2. 建立APK檔,自行複製到手機上安裝
然後按Build就會產生APK檔
把這個APK檔複製到手機裡,之後在手機裡安裝這個APK
如果舊手機有碰到硬體不支援的問題
可以參考這篇 Unity輸出Android硬體不支援
其他參考文件:
Unity 如何去設定行動裝置的畫面翻轉
https://gn02214231.pixnet.net/blog/post/211524319

又更新了! 這部分的教學很詳細易懂, 希望能有下一部:D
希望囉! :D
謝謝你的教學,很清晰也很容易理解 >v< 我發現我的android遊戲比例有點問題,text和button的字都很小, 不過我build的windows exe檔就完全沒問題…… 請問我應該怎樣設定才可以避免這個問題? 謝謝
我在part4的文章中新增了Canvas Scale的設定,應該可以解決這個問題
大大我的子彈不會跟飛機移動
有錯誤訊息嗎?
大大我在生產apk檔時,它要我選擇Android SDK root folder 請問這是什麼?
你要選擇Android SDK的位置,不過新版本沒這個問題了
感謝大大 ! 從part1跟著做到part5成功佈在手機上執行了,很有成就感,謝謝你的用心教學文!!
很高興對你有幫助 ^_^
你好,請問也可以將遊戲至入IOS系統的手機嗎
可以阿
請問為什麼飛機觸控移動的速度很慢,是我哪個環節沒做好嗎。
沒有,會很慢是正常
有沒有人在Build apk 檔案時失敗,顯示 Build failure, Failed to re-package resources, see the console for details. 請問老師該如何處理,就只差發布到手機這一小關了
樓上問題已解決,但手機裝完後畫面中按鈕變得很小很小,外星人也超出邊界,不知道有無改善方法
我在part4的文章中新增了Canvas Scale的設定,應該可以解決這個問題
你好 請問一下 我現在遇到一個問題 子彈有時會射不出來 程式都沒顯示錯誤 也有存檔 可是就是會出現說 一開始可以發射 但關掉後再開啟 他就射不出來了 重寫後可以運作 可是一段時間後就又射不出來了 其他功能則一切正常 請問該如何解決呢
請問樓上的大大 你是如何解決這個問題呢
請問9樓的初學老人大大 你是如何解決那個問題呢
本人已解決解析度問題,希望能幫到各位 先進canvas 把UI Scale Mode 改成 Scale With Screen Size即可 感謝版主教學 但是現在有兩個問題 1.:怎麼隨機產生外星人?因為只有單一外星人很無趣,想要讓不同的外星人物件輪流出場,但是程式碼不精通,很難啊.. 2:觸控的移動速度過慢 想要知道那段觸控的意義.. 才能針對這一點作出修改~ 以上問題,拜託版主了~
*****
非常感謝版主的教學 但我還有一個問題 我發佈平台的選項沒有web player 是因為下載個人免費版嗎?
不是,新版本不再支援web player了
非常清楚的教學 再次感謝!!
很高興對你有幫助 ^_^
為什麼當我生產成android game後再測試時會很lag? 我改了ship和invader的圖片, 當怪物和子彈出來的時候便開始lag..
這教程讓我學會很多 感恩
很高興對你有幫助 ^_^
請問發行後為何子彈無法顯示??(無錯誤訊息)
請問在用成APK檔的時候,它後來顯示 "Build failure!" "Unable to locate Android SDK" 要怎麼辦?
飛機會跑出螢幕除了解析度以外好像Input.touches[0].deltaPosition.y * Time.deltaTime 這個定位方法也是原因之一, 一旦手滑距離大一點飛機就會突破邊界跑到外面, 慢慢滑才會被邊界擋住