2017-01-06 25 views
2

我想弄清楚如何評估哪種技術對於給定的一系列問題是最好的。這裏有一個例子:顯示和隱藏GameObject最有效的技術?

  • 我有「箱」,這都是由一組UI按鈕, 文字,圖標的。我的目標是爲用戶提供隱藏/顯示 這些不同元素的可能性。

從這些指導方針,我能想到的4點不同的方式來處理這個:

  1. 隱藏/顯示通過激活/停用遊戲對象
  2. 這些元素破壞遊戲對象/實例化當我再次需要它時
  3. 將對象設置爲透明或不透明
  4. 將對象的位置設置在不可到達的位置,或使其規模納米級:P

的轉折是,這些框會在其中您可以瀏覽3D空間,這意味着他們將有時在屏幕上有時不是。我猜測它的重要性,以確定哪種技術最好?


我已經被這個問題:

  1. 我可以提前評估其解決方案將是最 性能有效?是否有某種意見認爲 ,例如激活/取消激活遊戲對象始終比破壞實例化要慢 ?
  2. 是否有一些關於這些共識的清單?
  3. 是否有其他技術來執行此任務?

我猜測它是所有關於對不同的項目/任務的工作經驗,但我覺得很難作爲一個初學者知道哪裏/如何找到信息

感覺就像在一種語言中,當有多種方式說同一件事,但你不知道如何制定它,甚至更糟糕:當你不知道一個單詞的存在會使這一切都閃耀。

如果不是Unity社區/堆棧溢出等,我會在真正的麻煩,所以再次感謝所有在這裏,是如此有益=)。

注意:我剛剛偶然發現了剖析器,並會研究它可以做什麼。

回答

1

最好的會是no 1這是Activating/Deactivatinggameobject,爲什麼?如果您一次啓動大量對象,將導致performance問題。例如:發射子彈。因爲你實例化並銷燬它,它會創建新的內存分配來存儲每個實例化對象,並且當你銷燬時將再次找到內存的位置來清除它。

no 3,將會有performance問題和colliding問題,如果場景中有很多對象但是是透明的,將會是性能問題。因爲即使它是透明的,GPU仍然需要渲染它們。所以無論是透明還是不透明都是一樣的。它會碰撞問題,如果你的對象有collider但透明。所以它會與其他物體發生碰撞。

no 4,將會有performance問題,因爲如果您對它們進行縮放,恐怕您會破壞動態配料,從而增加平局。我之前也嘗試過這種方法,當你的相機能夠移動360時,它並不是很好,想象一下你隱藏在你身後,即使它很遠。當你向後看時,你仍然可以看到它們。

要輕鬆地像Activate/Deactivate這樣的對象通常會(實例化/銷燬),您可以嘗試Pooling Systemhttps://github.com/6ameDev/Advanced-Pooling-System

+1

非常感謝您的回覆和解釋。這是非常豐富的信息...我很高興通過這種池技術獲得新的可能性!非常感謝你! – Gynko

+0

@Gynko好吧,不要忘記標記爲答案,如果它可以幫助你。所以和你一樣問題的其他人也會清楚。 –

+0

另外,就這麼說吧。你可以在本書中找到很多有用的東西和方法(當然,還有許多其他方面)。 http://gameprogrammingpatterns.com/ – zhekazheka