數(shù)據(jù)是現(xiàn)代應用設計中的核心懈玻,很多互聯(lián)網應用乾颁,用戶數(shù)據(jù)往往會發(fā)展為產品的核心價值湾盒。
魚(高質量的畫面表現(xiàn))我所欲也罚勾,熊掌(高FPS的游戲流暢體驗)亦我所欲也尖殃,二者不可得兼,而可權衡也。
文 / 丁建雄
圖 /
小白是單純?yōu)榕d趣而寫作的獨立創(chuàng)作人,如果您喜歡小白的文章瞎疼,歡迎關注科乎、交流、分享(引用請鏈接到本文)贼急。
一茅茂、Unity中的數(shù)據(jù)存儲
- 數(shù)據(jù)的持久化保持方式:
a. PlayerPrefs:Unity特有的存儲方式,用于游戲簡單的基本數(shù)據(jù)存儲太抓。
b. XML:跨平臺公認標準空闲,兼容性好。
c. JSON:輕量級數(shù)據(jù)模式走敌,跟XML 一樣具有跨平臺特性碴倾,同時語法更加簡潔。
d. 數(shù)據(jù)庫:主流數(shù)據(jù)庫都支持,像MySQL跌榔,SQLite异雁,Oracle等。 - 對于簡單的單機應用僧须,前三種數(shù)據(jù)存儲方式就足夠了纲刀,但是對于具有高用戶量的互聯(lián)網產品而言,數(shù)據(jù)庫的使用還是必不可少的担平。
二示绊、Unity中的性能優(yōu)化
- 對于普通3D游戲,30幀是入門標準驱闷,60幀才能流暢運行耻台;而對于VR應用,90幀才是入門標準空另,120幀才能保證基本流暢∨璧ⅲ現(xiàn)行的最頂尖的設備也有其性能局限,因此對于3D應用扼菠,巧妙的優(yōu)化就十分必要了摄杂。
- 遮擋剔除(Occlusion Culling):這一優(yōu)化方法源于比較流行的優(yōu)化技術視椎體剔除(Frustum Culling),意思是攝像機視角以外的所有物體都被剔除而不分配顯示內存與運行方法循榆。Unity 的遮擋剔除方法更進一步將無法看到的物體也排除在外析恢,這樣就大大降低了所需的系統(tǒng)性能。
- 如果簡單的游戲場景不需要每幀更新秧饮,那么即使是空的Update 也要去除映挂,因為即使是空的Update 也會每幀都運行。
- 賦值優(yōu)化:對象直接賦值法是最高效的盗尸,其次是FindGameObjectWithTag()等柑船,最低效的方法是Find()。
- 更新優(yōu)化:使用Coroutines 和InvokeRepeating 代替Update()泼各,在某些需要更新鞍时,但不是每幀都更新的情況下。
- 切換場景資源回收:在Update 里添加主動資源回收語句System.GC.Collection()扣蜻;
- 優(yōu)先使用Array逆巍,減少List 使用。
- 優(yōu)化數(shù)學模型與算法莽使。
- 幾何體模型優(yōu)化:盡量減少三角面的使用锐极;單獨模型不要超過65535個頂點;貼圖尺寸盡量不要超過1024 X 1024芳肌。
- 熟練掌握烘焙(bake)技術溪烤,減少動態(tài)光源(一般1-2個味咳,最好不超過4個)。
結束語
數(shù)據(jù)存儲對于聯(lián)網應用一般都要求使用數(shù)據(jù)庫系統(tǒng)檬嘀,而對于數(shù)據(jù)庫系統(tǒng)相關的知識并不復雜槽驶,如果涉及到高速、大量鸳兽、碎片化的數(shù)據(jù)存取等核心問題掂铐,會涉及到數(shù)據(jù)庫優(yōu)化方面,這塊還是有難度的揍异。
性能優(yōu)化方面全陨,主要是對一些基本操作的內存占用,F(xiàn)PS處理機制衷掷,渲染性能與效率權衡等操作的優(yōu)化辱姨。這些優(yōu)化很重要的一點就是需要設計師對Unity 運行機制以及基本的計算機處理效率有較深的了解,這樣才能在保證計算機達到較好幀率的情況下戚嗅,達到不錯的畫面運行效果雨涛。