[Unity] 事件訂閱與問題(下)- C# 介面
本篇繼續上一篇的內容來介紹第三種事件訂閱的方式:C# 介面。並在最後比較這三種訂閱方式。
本篇繼續上一篇的內容來介紹第三種事件訂閱的方式:C# 介面。並在最後比較這三種訂閱方式。
UnityEvent
與 C# event
在遊戲開發中,一個物件經常需要訂閱另一個物件的事件,以在事件發生時,執行對應的動作,像是玩家輸入、觸發機關、關卡管理等。而在 Unity 中,常見的方式是使用 UnityEvent 與 C# event 來讓物件提供事件介面,讓其它物件訂閱,但這兩者各自問題,反而讓程式容易出錯。本篇文章整理 UnityEvent...
當不同元件有相似的資料時,應該把相同的部份整理出來成為一個獨立的資料定義,並在用到的地方使用這個資料定義。如果元件之間各自定義的話,當要新增或修改資料時,所有用到的地方都得要一併更新,既秏時又費力,且容易出錯,會是一場災難。
在最近參與的遊戲專案中,我負責重新撰寫經過時間累積、充滿不同想法的核心元件。隨處可見複製的程式碼,元件之間交互使用,亦或是為了加新功能而繞路。可以看出每個新功能為了不影響之前的功能,正維持著微妙的平衡。對於負責重寫元件的我來說就好像是在茂密的遠古森林裡一路披荊斬棘,充滿挑戰。就想寫來記錄過程和心得。
Unity 2021 LTS 也出來好一陣子了,在 2021.2 版後就開始導入 C# 9.0。使用了半年後,發覺 C# 9.0 當中新增的語法可以讓程式碼更加簡潔易讀,整理成本篇來介紹個人常用的語法。
在專案開發上遇到這樣的問題:每個繼承類別要提供類似的 static 函式,功能差不多,但只有要取用的值不一樣。就在想能不能把 static 函式拉到基礎類別上,但又可以依照繼承類別給與不同的 static 成員值。
最近負責的 Unity 專案中,有很多 UI 有返回的按鈕,而這些按鈕也要可以透過程式觸發。如果為每個 UI 撰寫觸發的函式,一但觸發的邏輯改變,修改會是個大工程。如果為了這個小功能撰寫基礎類別,又顯得大才小用,而且 C# 的類別只能同時繼承一個類別,擴充性也不高。但 C# 類別可以繼承多個 interface,...
用 Unity 開發 Android 上的遊戲時,如果有用到 PlayerPrefs 儲存使用者的資料,可能會發現在重新安裝後,這些資料還是存在。這是因為在 Android 6.0 以上的版本,Android 都會自動備份應用程式的資料,在重新安裝後會恢復這些資料。
本篇用圖表來介紹 C# 類別成員的存取關係,有 private、protected、public,跟跨組件的成員存取,有 internal、protected internal、private protected。以及比較一般繼承與多型繼承中,會取得什麼版本的方法。
之前在撰寫 Unity 套件的時候,因為不知道使用者會用什麼類別來傳資料,所以都轉成 object 型別來傳遞,後來發現這會有效能上的問題。本篇文章就來探討這個問題以及解法。
當回憶可以被「裝幀」到書中,自此忘卻這段痛苦的經歷,從而開始新的人生,對一個人來說或許是救贖。但如果被有心人用來裝幀受害者的回憶,抑或是這些不想記起的回憶成為收藏家的玩物時,這童話故事般的能力對被裝幀的人來說是慈悲與救贖,還是自私與痛苦。
2023 年除了在電影院看了許多電影外,也透過 Netflix 等串流平台收看了經典以及想要補齊的電影。就用這篇來整理這段時間的心得。
回想去年看的電影比起以往還要來得多,沒想到也漸漸喜歡看電影的感覺。就想來記錄去年看過的電影,以後也可以回味喜歡的作品。
不知道從何時開始,就一直對鐵道很有興趣,去日本都會拜訪當地的鐵道博物館,或是搭乘比較獨特的鐵路路線,偶爾看到列車經過平交道時,也會想拍下它行經的過程。但是對於車站內的站牌卻沒有特別留意,在快速取得上面的資訊後,就沒有再看過一眼了,直到我在書店遇到這本《解構鐵道文字設計》。
《創作的基因》收錄小島秀夫對看過的小說與影視作品所寫下的心得文章。對小島來說,透過閱讀與觀影能帶來平常沒有的「體驗」,體驗到來自不同世界的精神,認識到更多的想法。這些作者透過創作出作品這個「MEME」,將自己的想法傳達給它人,從而讓受到影響的人創作出更多的「MEME」傳承下去,構成「創作的基因」。這本書就是收錄這...
買書總是比看書還快,買了還沒看的書只會越來越多。雖然是幾年前買的,但還記得當初是在誠品敦南店購入的,因為聽聞全世界第一間 24 小時營業的書店就要關了,於是趁著到台北參加活動的機會,去書店買了幾本書,這本就是其中之一。
2022 年在高雄電影館看了《今敏:造夢魔術師》這部記錄片才知道今敏導演,之後就對他的作品很感興趣,還買了所有電影的 BD 來看。當時看完記錄片,朋友就借我這本書看,不過因為工作關係,只看了一半就先還回去了,但是意猶未盡,後來就自己再買了一本來看。
在接觸戰國題材的遊戲後,就一直很想要認識日本戰國時期的歷史,在朋友的推薦下,選擇《日本戰國這樣讀》作為入門。
在一個由帝國長久統治銀河的時代中,帝國的主星「川陀」上出現了一名數學教授ー哈里.謝頓。他用「心理史學」預測帝國將在未來衰敗,整個銀河會陷入黑暗時期,人們必須建立一個「基地」來保存科技與文化,以在黑暗時期過後,讓銀河文明能快速恢復。
本篇繼續上一篇的內容來介紹第三種事件訂閱的方式:C# 介面。並在最後比較這三種訂閱方式。
UnityEvent
與 C# event
在遊戲開發中,一個物件經常需要訂閱另一個物件的事件,以在事件發生時,執行對應的動作,像是玩家輸入、觸發機關、關卡管理等。而在 Unity 中,常見的方式是使用 UnityEvent 與 C# event 來讓物件提供事件介面,讓其它物件訂閱,但這兩者各自問題,反而讓程式容易出錯。本篇文章整理 UnityEvent...
當不同元件有相似的資料時,應該把相同的部份整理出來成為一個獨立的資料定義,並在用到的地方使用這個資料定義。如果元件之間各自定義的話,當要新增或修改資料時,所有用到的地方都得要一併更新,既秏時又費力,且容易出錯,會是一場災難。
Unity 2021 LTS 也出來好一陣子了,在 2021.2 版後就開始導入 C# 9.0。使用了半年後,發覺 C# 9.0 當中新增的語法可以讓程式碼更加簡潔易讀,整理成本篇來介紹個人常用的語法。
在專案開發上遇到這樣的問題:每個繼承類別要提供類似的 static 函式,功能差不多,但只有要取用的值不一樣。就在想能不能把 static 函式拉到基礎類別上,但又可以依照繼承類別給與不同的 static 成員值。
最近負責的 Unity 專案中,有很多 UI 有返回的按鈕,而這些按鈕也要可以透過程式觸發。如果為每個 UI 撰寫觸發的函式,一但觸發的邏輯改變,修改會是個大工程。如果為了這個小功能撰寫基礎類別,又顯得大才小用,而且 C# 的類別只能同時繼承一個類別,擴充性也不高。但 C# 類別可以繼承多個 interface,...
本篇用圖表來介紹 C# 類別成員的存取關係,有 private、protected、public,跟跨組件的成員存取,有 internal、protected internal、private protected。以及比較一般繼承與多型繼承中,會取得什麼版本的方法。
之前在撰寫 Unity 套件的時候,因為不知道使用者會用什麼類別來傳資料,所以都轉成 object 型別來傳遞,後來發現這會有效能上的問題。本篇文章就來探討這個問題以及解法。
本篇繼續上一篇的內容來介紹第三種事件訂閱的方式:C# 介面。並在最後比較這三種訂閱方式。
UnityEvent
與 C# event
在遊戲開發中,一個物件經常需要訂閱另一個物件的事件,以在事件發生時,執行對應的動作,像是玩家輸入、觸發機關、關卡管理等。而在 Unity 中,常見的方式是使用 UnityEvent 與 C# event 來讓物件提供事件介面,讓其它物件訂閱,但這兩者各自問題,反而讓程式容易出錯。本篇文章整理 UnityEvent...
Unity 2021 LTS 也出來好一陣子了,在 2021.2 版後就開始導入 C# 9.0。使用了半年後,發覺 C# 9.0 當中新增的語法可以讓程式碼更加簡潔易讀,整理成本篇來介紹個人常用的語法。
在專案開發上遇到這樣的問題:每個繼承類別要提供類似的 static 函式,功能差不多,但只有要取用的值不一樣。就在想能不能把 static 函式拉到基礎類別上,但又可以依照繼承類別給與不同的 static 成員值。
最近負責的 Unity 專案中,有很多 UI 有返回的按鈕,而這些按鈕也要可以透過程式觸發。如果為每個 UI 撰寫觸發的函式,一但觸發的邏輯改變,修改會是個大工程。如果為了這個小功能撰寫基礎類別,又顯得大才小用,而且 C# 的類別只能同時繼承一個類別,擴充性也不高。但 C# 類別可以繼承多個 interface,...
用 Unity 開發 Android 上的遊戲時,如果有用到 PlayerPrefs 儲存使用者的資料,可能會發現在重新安裝後,這些資料還是存在。這是因為在 Android 6.0 以上的版本,Android 都會自動備份應用程式的資料,在重新安裝後會恢復這些資料。
之前在撰寫 Unity 套件的時候,因為不知道使用者會用什麼類別來傳資料,所以都轉成 object 型別來傳遞,後來發現這會有效能上的問題。本篇文章就來探討這個問題以及解法。
當回憶可以被「裝幀」到書中,自此忘卻這段痛苦的經歷,從而開始新的人生,對一個人來說或許是救贖。但如果被有心人用來裝幀受害者的回憶,抑或是這些不想記起的回憶成為收藏家的玩物時,這童話故事般的能力對被裝幀的人來說是慈悲與救贖,還是自私與痛苦。
不知道從何時開始,就一直對鐵道很有興趣,去日本都會拜訪當地的鐵道博物館,或是搭乘比較獨特的鐵路路線,偶爾看到列車經過平交道時,也會想拍下它行經的過程。但是對於車站內的站牌卻沒有特別留意,在快速取得上面的資訊後,就沒有再看過一眼了,直到我在書店遇到這本《解構鐵道文字設計》。
《創作的基因》收錄小島秀夫對看過的小說與影視作品所寫下的心得文章。對小島來說,透過閱讀與觀影能帶來平常沒有的「體驗」,體驗到來自不同世界的精神,認識到更多的想法。這些作者透過創作出作品這個「MEME」,將自己的想法傳達給它人,從而讓受到影響的人創作出更多的「MEME」傳承下去,構成「創作的基因」。這本書就是收錄這...
買書總是比看書還快,買了還沒看的書只會越來越多。雖然是幾年前買的,但還記得當初是在誠品敦南店購入的,因為聽聞全世界第一間 24 小時營業的書店就要關了,於是趁著到台北參加活動的機會,去書店買了幾本書,這本就是其中之一。
2022 年在高雄電影館看了《今敏:造夢魔術師》這部記錄片才知道今敏導演,之後就對他的作品很感興趣,還買了所有電影的 BD 來看。當時看完記錄片,朋友就借我這本書看,不過因為工作關係,只看了一半就先還回去了,但是意猶未盡,後來就自己再買了一本來看。
在接觸戰國題材的遊戲後,就一直很想要認識日本戰國時期的歷史,在朋友的推薦下,選擇《日本戰國這樣讀》作為入門。
之前的工作模式偏向個人負責一個專案或一個完整的功能,跟別人的互動主要是確認需求、處理反饋。現在的工作參與專案的規模則大上許多,一個元件或功能會由不同人接手,模式跟以往大不相同。這兩個月因為專案上線,所以從系統架構的工作轉去支援功能的維護。這段時間體驗到許多觀念衝擊,就在思考為什麼會如此適應不良。
在最近參與的遊戲專案中,我負責重新撰寫經過時間累積、充滿不同想法的核心元件。隨處可見複製的程式碼,元件之間交互使用,亦或是為了加新功能而繞路。可以看出每個新功能為了不影響之前的功能,正維持著微妙的平衡。對於負責重寫元件的我來說就好像是在茂密的遠古森林裡一路披荊斬棘,充滿挑戰。就想寫來記錄過程和心得。
最近終於有機會可以跟到大專案,而專案中有一人負責提供開發工具。為了方便進行 code review,所有成員要使用該工具。但沒有想到才剛使用一週,就遇上開發者大改架構,而且連個事前通知都沒有,一個禮拜的進度化為烏有。崩潰之餘只好來寫一下自己認知中,身為工具開發者時應該要有的觀念。
在受不了輸入法神奇的選字跟換了沒有方向鍵的 60% 鍵盤的因素下,決定學習新的輸入法,享受不用選字的爽感。在以字形為主的輸入法中,最後選擇嘸蝦米,這篇分享學習方法與使用半年的心得。
2023 年除了在電影院看了許多電影外,也透過 Netflix 等串流平台收看了經典以及想要補齊的電影。就用這篇來整理這段時間的心得。
回想去年看的電影比起以往還要來得多,沒想到也漸漸喜歡看電影的感覺。就想來記錄去年看過的電影,以後也可以回味喜歡的作品。
在一個由帝國長久統治銀河的時代中,帝國的主星「川陀」上出現了一名數學教授ー哈里.謝頓。他用「心理史學」預測帝國將在未來衰敗,整個銀河會陷入黑暗時期,人們必須建立一個「基地」來保存科技與文化,以在黑暗時期過後,讓銀河文明能快速恢復。
在推特上看到貼文分享一則在 Reddit 的討論串,討論串的樓主問其它人是不是也一樣,在逛 Steam 遊戲頁面時,會跳過宣傳影片直接去看遊戲擷圖或是評論。結果許多人回覆都有類似的習慣,因為覺得宣傳影片沒有傳達出遊戲玩法,所以直接去看遊戲擷圖的話,反而可以更快知道這個遊戲合不合自己的胃口。原推的作者就分享獨立遊戲...
沒有小兵海、沒有據點兵長、也不會說敵將討伐,P5S 還是承襲著 P5 的風格,不過戰鬥從回合制變成即時戰鬥,原本以為跟光榮合作會變成無雙割草遊戲,沒想到他們把 P5S 變成一款很棒的 ARPG。
沒有小兵海、沒有據點兵長、也不會說敵將討伐,P5S 還是承襲著 P5 的風格,不過戰鬥從回合制變成即時戰鬥,原本以為跟光榮合作會變成無雙割草遊戲,沒想到他們把 P5S 變成一款很棒的 ARPG。
去年 9 月逛了東京電玩展之後,就決定今年要來日本最大的獨立遊戲展ーBitSummit。BitSummit 每年夏天固定在京都市勸業館舉辦,為期三天,吸引世界各地的開發者與發行商來參加。而今年舉辦在 7/19 ~ 7/21(第一天為商務日),副標題為「Drift」。
去年 9 月逛了東京電玩展之後,就決定今年要來日本最大的獨立遊戲展ーBitSummit。BitSummit 每年夏天固定在京都市勸業館舉辦,為期三天,吸引世界各地的開發者與發行商來參加。而今年舉辦在 7/19 ~ 7/21(第一天為商務日),副標題為「Drift」。