雖然說是遊記,但是其實這趟前往BitSummit是代表遊戲去出差的,這邊再放一次遊戲的連結,有興趣的麻煩加一下願望清單。
Preface
前些日子因為一點小意外,需要在一兩天時間從零開始弄一個web service上雲,因為部分邏輯已經先用C#寫好了,平常也天天在用C#,沒想太多就用上了 ASP.NET core,沒想到意外的很香。
除了.NET Core很香之外,這兩天的時間寫了寫MVC的Web service,意外地發現和寫遊戲前端截然不同的寫法,在寫web service的時候,C#的async功能可以說是用個不停。
從以前就久聞UniRx差分出來的UniTask的大名,卻遲遲沒有機會與他相見,想說趁這個機會來碰一碰吧,碰巧,最近下班玩的一個插件,剛好使用Coroutine作為接口,趁這個機會,來試試UniTask可以怎麼讓程式撰寫變得有所不同。
Demo畫面鎮樓
簡介
UniAvatar是一個使用Unity製作的簡易對話系統,與文字冒險遊戲的範例。
專案所撰寫的程式碼均開放原始碼,且遵守MIT Lincense,但專案中的ADV實作部分有參考使用其他專案,使用時請參考各自的開放協議。
感謝ArmeCyan提供立繪與UI的支援,如果喜歡他的畫風請去粉專支持。
Repository連結:https://github.com/Harrison-Dev/UniAvatar
範例連結: 點我
如果有任何希望追加的功能,歡迎在repo中發issue或是PR協助專案變得更完整!
You can also see this article in my medium post.
我在接觸3D遊戲引擎時,一開始對旋轉這件事感到很困擾,
在Unity的編輯器中,旋轉的表現形式看起來像三個顏色的球狀旋轉。在Transform裡面又是有著3個數字的向量形式,到了程式碼裡面,又變成Quaternion這種資料形式,讓人一時之間很難搞懂。
這篇文章會記錄一些我對於旋轉的表示方法、各種表示方法的優缺點的理解,以及使用上的一些轉換方式。最後再用一個範例,在Unity中藉由滑鼠拖拉旋轉攝影機來表示如何用程式簡單控制旋轉。
You can also see my post in Bahamut.
使用Unity製作遊戲也好一陣子,
途中踩過不少坑都是對於Unity預設值與C#程式語言的設計上的不熟悉,
關於Unity預設值的部分,達哥在今年的TGDF上的簡報讓我獲益良多,大家都該去看看。
這次想探討的是關於C#程式語言的設計方面,
特別是相對於C/C++這些低階語言來說,C#/Java的記憶體分配像是一個巨大的黑盒子,
運作起來還蠻順利的,但是時不時就會像樂高一樣踩到腳(而且很痛),
這篇就來記錄一下自己學到的東西,順便討論裝箱(Boxing)跟C#的記憶體運作吧!
You can also see my post in Bahamut.
最近在開發2D遊戲攝影機的時候,參考到一篇2D攝影機設計經典文章
就是2015年的這篇 Scroll Back - 2D 捲軸遊戲的攝影機理論與實務
其中有提到,在多人操作的時候,會希望攝影機能照到所有角色,這篇就將討論如何實做這件事。
You can also see my post in Bahamut.
什麼是Object pooling
在我們製作一些遊戲的時候,常常需要使用到一些重複且相同的物件,
如果我們照著一般物件產生以及消除的方法:Instantiate 以及 Destroy,
會使許多GameObject(object)用完慘遭系統GC,如果像是子彈或者音樂遊戲的object被大量GC,
很可能造成遊戲卡頓,對於音樂遊戲或者是捲軸射擊遊戲都是相當致命的傷害,
為了避免這種問題,我們使用Object pool來儲存可以使用的object們,來免於上述的問題。
那麼Object pool該如何在C#中實作呢?