簡體   English   中英

在 Unity 中優化禁用的游戲對象

[英]Optimizing Disabled Game Objects in Unity

我正在 Unity 中創建一個無限地形生成系統,它會實例化玩家周圍的地形“塊”,並在它們不再可見時停用它們。 (見下圖)

玩家周圍加載了大塊地形

在玩家四處游盪一段時間后,許多這些塊將被實例化,然后停用它們的游戲對象。 我的問題是場景中所有停用的塊都在占用計算資源。

現在顯而易見的解決方案是銷毀不再可見的塊,以便 unity 不再加載它們,但是這些塊需要存在於 memory 中,以便在玩家足夠接近以再次啟用它們時重新啟用它們。 這可行,但是每個加載的塊都有與其關聯的數據,需要保持持久性。

有什么方法可以優化禁用的游戲對象或銷毀游戲對象並保留它們的數據嗎?

我假設禁用的 GameObjects 你的意思是它們被 GameObject.SetActive(false) 禁用,不幸的是,這是將它保存在 RAM 中的最實用/最佳的方法。 您需要做的是序列化塊,以便將其保存到磁盤,以便稍后當玩家再次靠近它時加載它。

沒有簡單的方法可以做到這一點,你只需要手動弄清楚你需要保存什么,寫一個 function 可以用這個數據保存一個塊,另一個 function 從這個數據生成一個塊。

您可以使用 Object 池化。 在每種類型的塊的開頭創建 2 個或更多(根據要求)對象並將它們禁用。 生成一個 PoolManager 來跟蹤塊。 您可以創建一個基於距離的邏輯來命令 PoolManager 需要在何時何地啟用哪個塊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM