開張初談

我用 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 時那怎麼辨?

螢幕快照 2015-04-15 下午11.50.41

我一度想把以前的做遊戲的那一套方法硬套用在 Unity 裡,認為沒有主迴圈的遊戲一點都不方便,連那個腳本何時該做什麼一點都不清楚、不自由。

Do things Unity way

摸索 Unity 時,看了很多教學影片,有實況的有錄影的,我發現我錯了。只要在設計時掌握好一些原則,其實在 Unity 裡做遊戲是很自由的,什麼主迴圈的一點都不重要了。

當有想要做什麼功能時,先 Create Empty GameObject 就對了!然後再把想做的功能寫成腳本拉進去,想操作那些元件也都拉進去,全部都拉進去!瘋狂的自由!

螢幕快照 2015-04-15 下午11.57.11

沒錯!我說很自由,但沒說 “很清楚”,畢竟沒有進入點,想要知道某個專案的運作原理還是得慢慢的一個一個 GameObject 的點進去看,所以製作 GameObject/Script 時一定要為它們取個好辨分名、做好分類,目前也只能用這方法盡量使專案清楚了。當然寫設計文件是最好的!但這不是 Unity 的範圍,這是全遊戲製作者的本分!

用了什麼工具,就用它的方法來做遊戲吧,不要再懷念過去的日子了。

除了工具之外

有了工具是不夠的,就像是現在給我們免費的廚具,附上了全自動按鈕,我們就能做好好菜嗎?

不會選食材、不懂食材本性、刀工不好,其實要做出一道讓人買單的菜是很難的。所以除了會使用 Unity 或其它工具時,更要知道遊戲設計是更重要的!未來我會寫一些我學到的東西,這個網誌不朝教大家跟我一起變成工具人,而是讓大家跟我一起變成更有靈魂的設計者。

跟我一起做遊戲吧!

發表留言