[Unity] 從零開始的學習心得 #1 – 遊戲如何動起來
此篇文章是《從零開始的 Unity 學習心得》系列的第一篇文章,這個系列是記錄我對 Unity 的開發及學習心得,包含我用何種方式去理解 Unity 的運作,並且在我所知的範圍內盡可能說明相關原理與開發要點。完整系列的目錄可以參考:
在開始深入 Unity 之前,我會建議先有點撰寫程式的概念。而這篇文章會先說明,遊戲程式與一般學習程式語言時撰寫的單次性程式的差異:遊戲迴圈。
此篇文章是《從零開始的 Unity 學習心得》系列的第一篇文章,這個系列是記錄我對 Unity 的開發及學習心得,包含我用何種方式去理解 Unity 的運作,並且在我所知的範圍內盡可能說明相關原理與開發要點。完整系列的目錄可以參考:
在開始深入 Unity 之前,我會建議先有點撰寫程式的概念。而這篇文章會先說明,遊戲程式與一般學習程式語言時撰寫的單次性程式的差異:遊戲迴圈。
我初次接觸 Unity 是在 2015 年 9 月左右,當時沒有任何做遊戲或互動媒體的經驗,一個基本只會 C++ 跟一點 Web 開發的畢業生加入了遊戲公司,從沒聽過 Unity 也沒寫過 C# 開始,一路學習到現在。
一路上依賴網路自學,拆解公司舊專案當參考,追趕新專案的需求,在去年 2016 的 4月前後,接觸了 Unity 相關的網路社群 (Unity 應用領域、You can make game),開始了大量吸趴的一年。
如今又過了一年,雖然憑著兩年實作經驗可能還只能算隻小菜鴨,更多深入專精的遊戲開發技術也尚未掌握起來,而這篇文章是想寫下到目前為止,我學習 Unity 的過程與理解。
因為我是從已經有程式底子的情況來學習 Unity,所以這系列的內容會有較多的程式視角,但我會盡量從沒基礎的角度進行補充,作為一個基本觀念的系列文章。
如果這系列文章,可以作為某人進入遊戲開發的敲門磚,我想便足矣。
這是第一篇用 Hexo 發佈的文章,用來熟悉操作,並隨便紀錄點心得。
本來我用來寫文章的部落格是使用 Wordpress,是一個用 php 及 SQL 資料庫建構的部落格系統。後來有了建立靜態網站的需求,才抱著嘗試的心態研究 Hexo,結果一試成主顧。
除了 Hexo 之外還有不少靜態部落格框架,選擇了 Hexo 的主要因素是它用 Node.js 作為開發語言,相對容易在 Windows 跟 Mac OSX 上建立共通的開發環境。
前幾天用 Unity 的 uGUI 元件組合出了雷達圖效果,同時也能夠及時的修改數值,表現在圖表上,是個蠻有趣的嘗試。
如果要完整表達內容,可能要搭配大量的圖片,所以這次嘗試使用影片的方式來分享實作。
過去在[C#/Unity] 更多 Singleton – More Singleton in Unity這篇文章中,實作了一個名為 Singleton manager 的物件來做 Singleton 的註冊與使用。
但最近在研讀 相依性注入 (Dependency Injection) 相關文章時,才發現有個叫做 Service Locator 的設計模式,基本上就是我過去所實作的 Singleton manager。再加上一些關於抽象化的觀念又比當初更成熟了,因此便想趁機改善當初的設計,同時正名為 Service Locator。
這是看 Unity 官方 Youtube 頻道的影片後,留下來的筆記。
相關連結:
最近有在看最新的奧特曼影集《奧特曼Geed》,同時也回頭重看了小時候最後看過的《奧特曼蓋亞》。
這周《奧特曼Geed》第 17 集到了一個劇情階段,剛好《奧特曼蓋亞》也幾乎全部看完了,也看了不少網路上的討論,突然便想來寫篇文章抒發想法。
這是今天遇到的小問題,是關於如何判斷 Image 的 Material 為 None 的方法。
可以看到下圖中的 Image Inspector 介面有兩個欄位顯示為 None,分別對應到 Image.sprite
跟 Image.material
這兩個 API,不過這兩個 API 雖然同為 None,但在腳本中的可完全不是這回事。
完成了一段 OpenGL 的線上課程後,基本上理解了幾個 OpenGL 功能的實作方式,並且試過了從讀取 Model 到渲染至螢幕上的流程。
不過課程中的解說僅止於 “如何做到”,為了能確認 “為何這麼做”,釐清每個 OpenGL API 如何呼叫,我開始了一個練習的新專案。
用這篇文章紀錄一下目前所做出來的練習與心得。
將 《Modern OpenGL C++ 3D Game Tutorial Series》這個 OpenGL 的線上課程完結了,比起預計所花的時間短了不少。 OpenGL 是個發展已久的 Graphics API,當遊戲光靠 CPU 已經無法負擔,需要透過 GPU 來 “硬體加速” 畫面處理的工作時,相對的溝通工作便可以用這類 API 來完成。 雖然還有其他 Graphics API,但我選擇了 OpenGL 作為入門,並碰巧遇上了這門線上課程的優惠。
完成了課程後,在這邊記下一些心得,讓其他想接觸 OpenGL 或這門線上課程的人作為參考。