2017年3月17日 星期五

[心得] 該用Javascript 還是 C# 寫 Unity 呢?


Unity 可以使用兩種不同的程式語言編寫Script:C#、JavaScript 。
但該那個程式語言才Unity的最佳方案呢?

首圖來源

我的結論:
無論你是有程式基礎,還是完全沒寫過一行程式得初學者
都應該用C#來寫Unity Script,而不是JavaScript。」
會敢這斷言說一定要用C#,
是因為我是從 JavaScript  開始學習 Unity  ,
並且最後把所有程式碼都改掉換C#。
---------------------

在開始使用Unity之前,我正在以  Phaser  這套 JavaScript game library,
試著製作一款  Zelda  類型的遊戲作為練習。
 那時後的進度 -->(點我

製作了約一年後,才在 2016年7月初開始轉用Unity。
就這樣過了半年之後...

2017年二月初我開始把所有的JavaScript程式碼都用C#重寫過!

 大約三千行的程式碼,大約九天的時間重寫完畢。
備註: 我是利用下班時間在寫遊戲程式的。
備註: 我的工作用不到Javascript跟C#,我是業餘的。

改完後我遇到的問題都解決了,並且遊戲執行效率大幅提升!
會毅然決然改用C#,是因為我遇到下面三個問題
  1. C# 跟 Javascript 溝通不良
    -- 因為Unity讀取Script是先讀取c#後,再讀取 JavaScript ,
    -- 所以當我的程式要從C#呼叫JavaScript撰寫的Component時會出現錯誤!
    --  這點非常的困擾,我為此將必須將C# Component改寫成JavaScript版。
    -- 而網路上神人們寫的Component,大多都是用C#寫的
    --- 例如我在用  自動尋路
  2. Unity的JavaScript是假的
    --  一開始我就知道他假的,但是我一開始並不以為意。
    --  想說我只會JavaScript,才不想多學C#咧。
    -- 直到我開始改換用Visual Studio Code作為編輯器時才發覺不妙。
    --  因為這個亂七八糟的假JavaScript,會被編輯器報告語法錯誤。
  3. Unity的JavaScript在跨平台很有問題-- Unity的JavaScript程式碼,常常會有在PC模式可以執行,
    -- 但是轉換成HTML5平台後就會壞掉的問題。
  4. -- 處理這個真的超級無敵麻煩的。
 我從JavaScript轉換到C#,其實也才花八九天而已。
但是改用C#之後再也不用煩惱上述三點些奇奇怪怪的問題。
誠心建議直接用C#會比較好,少走些冤枉路。

我相信不久的將來,Unity將會直接廢掉對這種假JavaScript的支援。

更新2017.11.24 Unity 2017.2 版已經選不到Javascript了
 

2 則留言: