[C#/Unity] 更多 Singleton – More Singleton in Unity

在舊文章 應用 Singleton pattern 及 Unity Component 做系統拆分與管理 – Dividing your game system in unity. 中,我開發了一套架構來作為單一 Singleton 的替代方案,用於統一管理會在整個 Unity 專案中使用到的遊戲功能系統。

該篇文章中的 GameSystemMono (即仿 Singlton 的組件) 繼承了 MonoBehaviour,來實現一些設計上的想法。不過帶來優點的同時也產生了一些限制,經過與他人的討論後,認為還是需要一個不依賴 MonoBehaviour 的 Singleton 組件方案,兩者互相補足,而這個想法終於在最近進行了實作。

Read More »

[Unity] 關於 Component 的 GC 測試,出現了大問題! – Testing GC of Component in Unity

不久前才測試完了 Delegate 的 GC,雖然只是驗證了一個可以預期的結果。不過才過幾小時,我就想到類似的議題在 Unity Component 上,是否會因為 Component 特性而產生不太一樣的結果?

雖然本是要測試 Delegate,不過我同時也想驗證一下之前就發現的一個 Component 特性:自行移除相關參照 (Reference)

結果竟然在測試過程中有了額外發現,間接造成 Delegate 的測試無法進行下去… 所以文章便直接停止在 Unity Component 的 GC 測試。

componentReference

Read More »

測試如何在場景切換過程安插工作 – Testing Unity SceneManager Events

最近與朋友討論了如何在 Unity 切換場景完的瞬間,立刻執行某些特定工作。嘗試了幾個方式後,發現基本上是不可能的。不過如果要在Awake 之後, Start 之前進行某些工作,則可以利用 Unity SceneManager 類別底下預設的幾個事件 (Event) 來達成。

不過 Unity 官方文件對於 SceneManager 預設事件的說明可以說是沒有,所以還是得自行測試過才能確定功能。

Read More »

[Live] MonoBehaviour 機制說明與測試 – Testing MonoBehaviour Message

前幾天有場直播跟大家分享我對 Unity MonoBehaviour 的一些心得,花了一個小時左右跟觀眾討論一些在 Unity 開發時容易遇到的問題,以及一些零碎的小細節。

之後的一個多小時,則是閱讀 Unity 官方文件以及進行測試,目的是希望了解 Awake、Start、Update、OnDestroy、OnEnable 等 MonoBehaviour 事件(Message enent) 的執行細節。

直播紀錄與實驗紀錄如下:

2017/2/21 直播紀錄 (Unity 開發 | Monobehaviour 機制說明與測試)

Read More »

在 Unity 使用 Git Submodule/Subtree 的困境及應對 – trouble when using Submodule or Subtree in Unity

同為 Unity 專案之間,一定有許多方便且時常重複使用的程式碼,是加快開發的重要工具。如果能夠同時在所有專案都有一份這樣的程式碼,又有手段可以同時對每一分程式碼進行更新或修改就再好不過了,於是我們通常會想到利用 Submodule / Subtree 來管理專案。

不過因為 Unity 專案的特性,事情可能沒有那麼簡單容易。

在使用 Git Submodule / Subtree 來管理你的 Unity 專案之前,你應該先釐清 Submodule / Subtree 的特性其實跟 Unity 專案結構是有些衝突的。

subproject.jpg

Read More »