2011-10-26 48 views

回答

0

什麼是「資源大小」給你?

如果您考慮映像文件,那麼該映像文件在磁盤上的大小可能會或可能不會被壓縮,壓縮取決於文件內容。圖像文件被加載到具有內存大小的紋理中。這也可能是壓縮(PVR)或不壓縮。最後,磁盤上的圖像大小,壓縮和內存表示(比特深度等)都會影響加載該圖像需要多長時間。

如果將其擴展到其他資源類型,如聲音文件,屬性列表和數據庫,基於某些任意難以定義的「資源大小」來控制進度條變得非常困難。

長話短說:你可以得到一個文件的大小。你可以根據你的加載欄,但它不會反映實際的加載時間。

您也可以估計或計算資源佔用的內存量,即2048x2048x32bit紋理爲16 MB - 除非它在內存中壓縮(PVR紋理)。但是這需要對每個資產的數據結構有深入的瞭解。另外,例如,如果只加載其中四個紋理,則在每個紋理之後,您的進度條會跳到25%,50%,75%和100% - 您無法知道「裝入紋理的距離」在這種情況下使進度條進展順利。

長話短說:

大多數進度條單純考慮許多資源是如何被加載。這是你從你放入場景的代碼中知道的,也就是說。您加載的圖像,音頻文件等。除非您從數據文件中加載整個場景,例如,如果您使用某種設計工具,則在加載之前,您不會知道運行時的資源數量。

另一種方法是在每個資源塊後更新進度欄,以便您可以將進度條進度分成幾個具體步驟。如果很少的資源需要大部分時間加載,這是特別有用的,它們是原子塊(即2048x2048紋理圖集),它需要幾分之一秒才能加載,而沒有任何更新進度條的機會。

最後,除非實際看到3秒以上的加載時間,否則進度條沒什麼意義。在這種情況下,您最好花時間優化加載時間。例如,通過選擇理想的紋理格式,通過使用紋理地圖集,通過避免冗餘資產負載,推遲某些資產的加載或將它們加載到單獨的線程中,可以完成很多任務。

+0

感謝您的詳細解答,我想出瞭如何從您的建議中做到這一點。 – davidcoder