我用 Unity
Unity 5.0 開始, “個人版" 宣布免費使用所有引擎的功能,使它越來越火熱了起來。讓人不想跟風也不行了。在這裡先講一下我剛使用 Unity 至今的心中最大的魔障。
主迴圈(main lopp )在那裡?
我一開始接觸 Unity 時第一個問題是:
主迴圈(main lopp )在那裡?
在我的印像中任何應用程式一定會有一個進入點,然後在這個進入點建立一個我們遊戲的主迴圈,把遊戲邏輯、繪圖等都寫在這裡。大約長這樣:
int main(int argc, char *argv[]) { while (Game->isRunning()) { Game->Update(); Game->Render(); } return 0; }
想分析任何程式時,都可以從 main() 開始查看,看這個程式跑了那些東西,裡面運作的流程為何。就算不能全部看出,至少也能看出個 7 ~ 8 成。
但到了 Unity 裡時,主要都是使用繼承自 MonoBehaviour 的元件來構成遊戲,每個元件都是獨立的個體,各有各的 Awake()、Start(),完全沒有進入點這個東西,當你打開一個 Unity Scene 時,裡面若有一堆 GameObject,你要如何去了解這個專案如何運作呢?先從 Script Execution Order 開始猜起嗎?若該專案裡的腳本都是 Default Time 時那怎麼辨?
我一度想把以前的做遊戲的那一套方法硬套用在 Unity 裡,認為沒有主迴圈的遊戲一點都不方便,連那個腳本何時該做什麼一點都不清楚、不自由。
Do things Unity way
摸索 Unity 時,看了很多教學影片,有實況的有錄影的,我發現我錯了。只要在設計時掌握好一些原則,其實在 Unity 裡做遊戲是很自由的,什麼主迴圈的一點都不重要了。
當有想要做什麼功能時,先 Create Empty GameObject 就對了!然後再把想做的功能寫成腳本拉進去,想操作那些元件也都拉進去,全部都拉進去!瘋狂的自由!
沒錯!我說很自由,但沒說 “很清楚”,畢竟沒有進入點,想要知道某個專案的運作原理還是得慢慢的一個一個 GameObject 的點進去看,所以製作 GameObject/Script 時一定要為它們取個好辨分名、做好分類,目前也只能用這方法盡量使專案清楚了。當然寫設計文件是最好的!但這不是 Unity 的範圍,這是全遊戲製作者的本分!
用了什麼工具,就用它的方法來做遊戲吧,不要再懷念過去的日子了。
除了工具之外
有了工具是不夠的,就像是現在給我們免費的廚具,附上了全自動按鈕,我們就能做好好菜嗎?
不會選食材、不懂食材本性、刀工不好,其實要做出一道讓人買單的菜是很難的。所以除了會使用 Unity 或其它工具時,更要知道遊戲設計是更重要的!未來我會寫一些我學到的東西,這個網誌不朝教大家跟我一起變成工具人,而是讓大家跟我一起變成更有靈魂的設計者。
跟我一起做遊戲吧!