Unity C# | 物件池基本概述

閱讀時間約 3 分鐘

一、前言

  這篇文章將會講述物件池的基本概述,並介紹應用方向。

二、物件池

  在軟體開發中,物件池是一種常見的設計模式,用於讓物件使用效率最大化的有效管理與重複使用物件。物件池的主要功能在於提升效能與降低資源消耗。

1. 物件使用方式

  物件池的主要目的是避免頻繁的物件創建和銷毀,這也是新鮮人在程式設計時很常使用的方式,或者用於功能測試時快速撰寫時的做法,如果希望讓資源不會消耗太大,就會改為使用物件池。
  在物件池中,物件會被事先創建並存儲起來,當需要使用物件時,可以直接從物件池中取得一個可用的物件,而不是每次都創建一個新的物件。當物件不再需要使用時,可以將其放回物件池中,以供後續使用。
  當我們要從物件池取用一個新的物件時,僅僅轉移物件的座標即可,並不需要重複的生成物件與銷毀。因為是簡單的座標轉移與狀態改變,所以在資源的使用效率上更為高效。

2. 廢物資料

  在我之前撰寫的一篇文章中,聽說物件生成與銷毀的過程中,會產生多餘的垃圾資料,初時影響不大,但當生成成千上萬的物件時,就會對遊戲的系統造成可見的影響。

3. 設計難度

  這篇文章不介紹詳細的撰寫方式,第一個方面是因為精力關係,這兩天忙其他的事情沒精力研究;第二個方面飾物件池並不好分享,重複利用並不困難,重點是要判斷是否有現有物件,否則要生成新的物件,也就是陣列。

三、應用方向

  物件池在軟體開發中有廣泛的應用,基本上只要經常重複使用的遊戲元素都可以考慮使用物件池來設計。

1. 介面(UI)

  在遊戲開發中,介面通常是頻繁使用且數量眾多的物件,而我在使用的時候總是覺得介面很吃效能,因為座標改變相對比較困難,而且聽說大量地使用介面物件容易導致電腦當機。
  使用物件池能有效管理遊戲中的按鈕、文字、圖片等,這些都可以使用物件池來重複利用,提高介面的反應速度和效能,例如在 Facebook 社團中看到浮動視窗這種會移動的介面,就必須要使用物件池。

2. 子彈

  子彈!有什麼比子彈更容易成千上萬的出現?玩家在發射子彈、敵人在發射子彈、陷阱也可能發射子彈!在射擊遊戲或彈幕遊戲中,子彈是頻繁出現的物件,大量的子彈創建與銷毀更需要精簡的使用物件。
  使用物件池可以避免每次創建子彈物件,改為重複使用已經存在並且不再使用的子彈物件。這樣可以節省資源並提高遊戲性能,使子彈的生成和銷毀更加高效,也更不容易影響遊戲性。

3. 特效

  遊戲中的特效效果(如爆炸、粒子效果等)通常需要頻繁的創建和播放,這幾乎已經成為一種常識,使用物件池可以管理特效物件的重複利用,減少對系統資源的需求,提高特效的效果和性能。
  拿子彈來舉例就很容易懂了,發射、飛行、命中,這三個過程中通通會使用到特效,如果產生子彈要生成;子彈產生特效又要生成;音效產生又要生成,這個過程會使用三次的生成物件。

4. 音效

  音效在遊戲中扮演著重要的角色,我曾經以為一份音效就夠用了,不過在實作的時候發現有時候還是會在沒播放完的時候播放下一個。
  因此需要使用物件池重複利用已經存在的音效物件,尤其是音效物件是一個很容易重複使用的遊戲物件,只需要簡單的一行程式碼就能讓它重複運作,不需要生成一個新的物件。

四、後記

  這篇文章主要是讓我簡單撰寫好,然後我得趕快休息了,不知道為什麼暑假我沒有在度假的感覺,倒是認真開發專案讓我很投入就是了...


























即將進入廣告,捲動後可繼續閱讀
為什麼會看到廣告
103會員
246內容數
對設計師如何成長為設計師好奇嗎? 2020年九月,我進入大學學習當一位設計師,從開始到沉寂,再到重燃熱忱,我將在方格子紀錄我的成長歷程、理念、心情,分享我在這段旅程中所經歷的故事。
留言0
查看全部
發表第一個留言支持創作者!
瓶裝雪的沙龍 的其他內容
這篇文章將會從基本概述到射線偵測應用的詳細步驟,講述運用射線改變特定圖層中,射線命中的物件顏色。
這篇文章將會講述平滑的旋轉與單次旋轉的差異,並介紹旋轉的兩種體系與其使用效果,並提供參考的示範影片。
這篇文章將會講述常見的座標(Transform)旋轉方式,適合初學者到進階程式員複習。
這篇文章將會講述設計模式中的狀態模式,其資料源自於書籍、網路、個人理解,從簡介→架構→撰寫→測試的整個流程進行介紹與分享。
這篇文章將會介紹建構式(Constructor),這是一個隱藏在程式腳本中的重要知識,我們極常使用建構式,但新手程式員幾乎不會知道它。
這篇文章將會講述 Unity Visual Effect Graph 的系統簡介,並且簡單介紹這項系統主線上的四個核心組件。
這篇文章將會從基本概述到射線偵測應用的詳細步驟,講述運用射線改變特定圖層中,射線命中的物件顏色。
這篇文章將會講述平滑的旋轉與單次旋轉的差異,並介紹旋轉的兩種體系與其使用效果,並提供參考的示範影片。
這篇文章將會講述常見的座標(Transform)旋轉方式,適合初學者到進階程式員複習。
這篇文章將會講述設計模式中的狀態模式,其資料源自於書籍、網路、個人理解,從簡介→架構→撰寫→測試的整個流程進行介紹與分享。
這篇文章將會介紹建構式(Constructor),這是一個隱藏在程式腳本中的重要知識,我們極常使用建構式,但新手程式員幾乎不會知道它。
這篇文章將會講述 Unity Visual Effect Graph 的系統簡介,並且簡單介紹這項系統主線上的四個核心組件。
你可能也想看
Thumbnail
八十-二十法則提到,在多數生活的現象中,約80%的效果是來自於20%的原因,除了經濟學、學習理論外,這個法則同樣也可以應用在生活中的幸福感上。 我們需要認知到擁有的越多不一定會越快樂,反而有可能會因為無法專注在少數事物上而產生空虛、迷茫的感覺。「極簡」精神最重要的一點在於放下對於「多」的執著,將有
Thumbnail
1.加權指數與櫃買指數 週五的加權指數在非農就業數據開出來後,雖稍微低於預期,但指數仍向上噴出,在美股開盤後於21500形成一個爆量假突破後急轉直下,就一路收至最低。 台股方面走勢需觀察週一在斷頭潮出現後,週二或週三開始有無買單進場支撐,在沒有明確的反轉訊號形成前,小夥伴盡量不要貿然抄底,或是追空
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
前言 這是紀錄本人學習Unity C#時的筆記,希望讓自己能夠整理思緒,方便記憶。 因為是新手自學的關係,也很有可能有誤解或錯誤的地方,請見諒… 類別Class 創造類別之後就可以持續使用創建的類別來創建物件,以武器為例,在遊戲裡有不同的武器,但是他們的屬性是一樣的,我們就可以在一個類別裡面設定不同
Thumbnail
前言 這是紀錄本人學習Unity C#時的筆記,希望讓自己能夠整理思緒,方便記憶。 因為是新手自學的關係,也很有可能有誤解或錯誤的地方,請見諒… 變數 宣告變數不能使用數字開頭,或是除了_之外的符號。 ·整數 int ·浮點數 float、double float 精度低、佔的資源較少,double
Thumbnail
如何使用Game CI 提供的Github Action 將建置專案自動化
Thumbnail
Unity (美股代號:U) 是全球最大的遊戲製作平台與龍頭引擎。不過股價自高點滑落並盤據20-30元已經有一段時間。此次財報非常樂觀,值得一看。
Thumbnail
開啟Xampp伺服器,並啟動 apache & mysql mysql建立 開啟Unity 建立 Script toPhp.cs Unity物件 toWeb物件設定 此處需特別留意設定 UItext & MYtext ,否則會出現物件未設定的Null錯誤 Button 設定 test.php con
  透過Unity平台開發出來的遊戲,比較廣為人知,例如憤怒鳥和寶可夢。Unity 的遊戲開發技術,可以刺激遊戲產業,更朝氣蓬勃有效率地開發新遊戲用戶透過遊戲平台,就可以進入元宇宙的世界!
Thumbnail
Unity在這週公布了2022年Q1的財報,財報發布後股價下挫30%,下跌至30美元,已經遠遠跌破兩年前的上市價。Unity雪崩式的下跌是因為Q1的營運不理想、未來的營運預期不理想、還是單純是隨著近期成長股估值修正而下跌呢?這篇文會分析Unity 2022Q1財報及預測Unity未來的營運狀況。
Thumbnail
來談一下最近我很感興趣的一個投標,遊戲開發平台 Unity。
Thumbnail
八十-二十法則提到,在多數生活的現象中,約80%的效果是來自於20%的原因,除了經濟學、學習理論外,這個法則同樣也可以應用在生活中的幸福感上。 我們需要認知到擁有的越多不一定會越快樂,反而有可能會因為無法專注在少數事物上而產生空虛、迷茫的感覺。「極簡」精神最重要的一點在於放下對於「多」的執著,將有
Thumbnail
1.加權指數與櫃買指數 週五的加權指數在非農就業數據開出來後,雖稍微低於預期,但指數仍向上噴出,在美股開盤後於21500形成一個爆量假突破後急轉直下,就一路收至最低。 台股方面走勢需觀察週一在斷頭潮出現後,週二或週三開始有無買單進場支撐,在沒有明確的反轉訊號形成前,小夥伴盡量不要貿然抄底,或是追空
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
前言 這是紀錄本人學習Unity C#時的筆記,希望讓自己能夠整理思緒,方便記憶。 因為是新手自學的關係,也很有可能有誤解或錯誤的地方,請見諒… 類別Class 創造類別之後就可以持續使用創建的類別來創建物件,以武器為例,在遊戲裡有不同的武器,但是他們的屬性是一樣的,我們就可以在一個類別裡面設定不同
Thumbnail
前言 這是紀錄本人學習Unity C#時的筆記,希望讓自己能夠整理思緒,方便記憶。 因為是新手自學的關係,也很有可能有誤解或錯誤的地方,請見諒… 變數 宣告變數不能使用數字開頭,或是除了_之外的符號。 ·整數 int ·浮點數 float、double float 精度低、佔的資源較少,double
Thumbnail
如何使用Game CI 提供的Github Action 將建置專案自動化
Thumbnail
Unity (美股代號:U) 是全球最大的遊戲製作平台與龍頭引擎。不過股價自高點滑落並盤據20-30元已經有一段時間。此次財報非常樂觀,值得一看。
Thumbnail
開啟Xampp伺服器,並啟動 apache & mysql mysql建立 開啟Unity 建立 Script toPhp.cs Unity物件 toWeb物件設定 此處需特別留意設定 UItext & MYtext ,否則會出現物件未設定的Null錯誤 Button 設定 test.php con
  透過Unity平台開發出來的遊戲,比較廣為人知,例如憤怒鳥和寶可夢。Unity 的遊戲開發技術,可以刺激遊戲產業,更朝氣蓬勃有效率地開發新遊戲用戶透過遊戲平台,就可以進入元宇宙的世界!
Thumbnail
Unity在這週公布了2022年Q1的財報,財報發布後股價下挫30%,下跌至30美元,已經遠遠跌破兩年前的上市價。Unity雪崩式的下跌是因為Q1的營運不理想、未來的營運預期不理想、還是單純是隨著近期成長股估值修正而下跌呢?這篇文會分析Unity 2022Q1財報及預測Unity未來的營運狀況。
Thumbnail
來談一下最近我很感興趣的一個投標,遊戲開發平台 Unity。