乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      技巧

       3dC 2013-05-23
      以下技巧并不是必須的,但是對(duì)于想要提升游戲性能的人來(lái)說(shuō)應(yīng)該還是很不錯(cuò)的。 





      優(yōu)化的常規(guī)技巧 


      剖析你的游戲。 


      不要花費(fèi)時(shí)間來(lái)優(yōu)化那些晦澀的代碼或者縮減圖形文件的大小,除非這是你游戲的瓶頸。第一次剖析你的游戲?qū)?huì)使你發(fā)現(xiàn)你游戲的瓶頸。Apple's Shark是一個(gè)很好的用來(lái)剖析基于OpenGL的程序的工具。



      再次剖析你的游戲。 


      優(yōu)化之后不要忘記再剖析一次你的游戲,這樣可以檢查你所做的優(yōu)化是否達(dá)到了預(yù)期的效果。當(dāng)然,這樣做也可能會(huì)使你發(fā)現(xiàn)更多的瓶頸。



      流程第一、性能第二。 


      花費(fèi)時(shí)間來(lái)使你游戲的創(chuàng)建盡可能地流暢。盡可能快地修正游戲中的錯(cuò)誤將會(huì)使你后期更容易優(yōu)化你的游戲。



      在Scene View中測(cè)試場(chǎng)景。 


      這樣做將會(huì)使你清楚了解這個(gè)場(chǎng)景中的物體或者附加在物體上的腳本是否降低了游戲性能。如果Scene View反應(yīng)遲鈍,那么有可能是圖形方面的原因,如果Scene View反應(yīng)不遲鈍,那么瓶頸可能出在腳本或者物理系統(tǒng)上。



      禁用指定游戲物體。 


      在play模式下,嘗試禁用并啟用游戲物體來(lái)排查出游戲慢的原因。 





      網(wǎng)格 


      如果可能的話,把相鄰的物體(網(wǎng)格)合并為一個(gè)只有一個(gè)材質(zhì)的物體(網(wǎng)格)。 


      比如,你的游戲中包含一個(gè)桌子,上面有一堆東西,你完全可以在3D程序中將它們合并在一起(這可能也需要你將這些物體的紋理合并為一個(gè)大的紋理集)。減少需要渲染的物體的數(shù)量可以極大地提高游戲性能。



      不要有不必要的網(wǎng)格。 


      如果你的游戲場(chǎng)景中有一個(gè)人物,那么他應(yīng)該是一個(gè)網(wǎng)格。如果你有一個(gè)船,那么它也應(yīng)該只是一個(gè)網(wǎng)格。



      每一個(gè)網(wǎng)格只用一種材質(zhì)。 


      使用極少的面數(shù)的網(wǎng)格(比如500個(gè)多邊形以下)。 


      最好把你人物的三角面數(shù)量控制在1500-2000個(gè)之間。 


      這個(gè)數(shù)量可以說(shuō)是游戲質(zhì)量和性能之間一個(gè)均衡值。如果你的模型有四邊形,那么在導(dǎo)入模型的時(shí)候,引擎將會(huì)把每個(gè)四邊形變?yōu)閮蓚€(gè)三角形。






      光照 


      像素光。 


      像素光可以讓你的游戲看起來(lái)效果很牛逼,但是不要使用過(guò)多的像素光。在你的游戲中可以使用質(zhì)量管理器來(lái)調(diào)節(jié)像素光的數(shù)量來(lái)取得一個(gè)性能和質(zhì)量的均衡點(diǎn)。



      性能占用順序:聚光燈>點(diǎn)光源>平行光。 


      一個(gè)好的點(diǎn)亮場(chǎng)景的方法就是先得到你想要的效果,然后看看哪些光更重要;在保持光效的前提下看看哪些光可以去掉。



      點(diǎn)光源和聚光燈只影響它們范圍內(nèi)的網(wǎng)格。 


      如果一個(gè)網(wǎng)格處于點(diǎn)光源或者聚光燈的照射范圍之外,并且光源的attenuate開(kāi)關(guān)是打開(kāi)的,那么這個(gè)網(wǎng)格將不會(huì)被光源所影響,這樣就可以節(jié)省性能開(kāi)銷(xiāo)。這樣做理論上來(lái)講可以使用很多小的點(diǎn)光源而且依然能有一個(gè)好的性能,因?yàn)檫@些光源只影響一小部分物體。一個(gè)網(wǎng)格在有8個(gè)以上光源影響的時(shí)候,只響應(yīng)前8個(gè)最亮的光源。






      貼圖 


      在外觀不變的前提下,貼圖大小越小越好。


      如果你的顯卡的顯存不夠大的話,你游戲中的貼圖將會(huì)被轉(zhuǎn)存到系統(tǒng)內(nèi)存中,在顯卡調(diào)用它們的時(shí)候再傳到顯卡中。對(duì)于比較新的電腦來(lái)說(shuō),內(nèi)存和顯卡之間有足夠的帶寬來(lái)達(dá)到一個(gè)很好的性能;如果你很無(wú)恥地用了巨多的大圖片的話,在低顯存的電腦上運(yùn)行你的游戲的時(shí)候,你的游戲必然會(huì)掛掉。倒是沒(méi)有必要在圖形編輯軟件中調(diào)整貼圖的大小。你可以在unity導(dǎo)入貼圖的時(shí)候進(jìn)行調(diào)整。



      不要使用低質(zhì)量的圖片。


      在小播放界面的游戲中使用低質(zhì)量的jpeg圖片或者低色彩的png圖片亦或是gif圖片沒(méi)什么問(wèn)題。在發(fā)布游戲的時(shí)候,引擎會(huì)自動(dòng)壓縮這些圖片,多重壓縮和解壓將會(huì)降低圖片的質(zhì)量,所以最好保持貼圖文件的分辨率為原始分辨率。這樣就會(huì)減少多重壓縮和解壓所導(dǎo)致的圖片失真現(xiàn)象。



      音頻 


      使用.ogg格式的壓縮音頻文件。


      所有其他的音頻格式文件在發(fā)布時(shí)將會(huì)被轉(zhuǎn)儲(chǔ)為未壓縮音頻文件。 


      對(duì)于小音效使用未壓縮音頻文件。


      Unity在運(yùn)行過(guò)程中會(huì)解壓所有的ogg文件。它會(huì)把經(jīng)常播放的音效轉(zhuǎn)儲(chǔ)為WAV或者aiff格式的文件,這樣就可以不用cpu總是解壓這些文件了。比如快速的槍聲,腳步聲和其他一些連續(xù)播放又很短小的音效。






      物理 


      每一個(gè)剛體都需要大量運(yùn)算,所以剛體越少越好。


      當(dāng)角速度和移動(dòng)速度降低到某個(gè)臨界值的時(shí)候,剛體將會(huì)進(jìn)入休眠狀態(tài)。當(dāng)剛體進(jìn)入休眠狀態(tài)時(shí),他們需要的運(yùn)算量將會(huì)大量減少,但是會(huì)保留很少的一部分運(yùn)算來(lái)隨時(shí)應(yīng)對(duì)外部的作用力或者物體的碰撞。



      多重碰撞相比一個(gè)接一個(gè)地碰撞將會(huì)花費(fèi)更多的運(yùn)算。


      比如一個(gè)球去碰一堆球所需要的計(jì)算量會(huì)遠(yuǎn)遠(yuǎn)大于去一個(gè)一個(gè)地碰這些球所需要的計(jì)算量。








      Shaders



      多重效果的shader就比看起來(lái)樣式很單一的shader要更耗費(fèi)資源。 


      同樣在一個(gè)擁有貼圖和光反射的物體上,使用VertexLit Diffuse shader無(wú)疑是最省資源的。 


      腳本 


      選擇適當(dāng)?shù)乃惴ā?/span>


      選擇一個(gè)正確的算法將會(huì)更容易進(jìn)行優(yōu)化。最好的算法不一定就是算法復(fù)雜度最低的算法。



      盡量不要使用FixedUpdate()函數(shù)。


      這種函數(shù)在每一個(gè)物體的每一個(gè)腳本中每秒調(diào)用50-100次。如果可以的話盡量把這個(gè)函數(shù)里面的東西放在Update()函數(shù)中執(zhí)行。



      如果可能的話,在腳本無(wú)用的時(shí)候禁用它。


      比如有一個(gè)敵人在數(shù)千米開(kāi)外的位置,完全可以禁用它的AI腳本,直到需要的時(shí)候再啟用這個(gè)腳本。啟用和禁用物體的最好方法就是使用gameObject.SetActiveRecursively(false)函數(shù),并且把物體的球碰撞和盒碰撞都置為trigger。 


      如果不需要Update函數(shù)的時(shí)候就刪掉它。


      在創(chuàng)建一個(gè)新腳本的時(shí)候,系統(tǒng)會(huì)自動(dòng)加入一個(gè)空的Update函數(shù),如果你不使用它的話就把它刪掉。



      適當(dāng)?shù)臅r(shí)候使用物體引用。


      如果調(diào)用一個(gè)物體需要走一個(gè)很彎的邏輯,比如someGameObject.transform.gameObject.rigidbody.transform.gameObject.rigidbody.transform,這樣就不如直接在腳本中聲明一個(gè)變量,把要調(diào)用的物體直接賦給這個(gè)變量。



      盡量使用協(xié)同函數(shù)。


      協(xié)同函數(shù)開(kāi)銷(xiāo)很小,相比于一直在進(jìn)行不必要調(diào)用的Update函數(shù)來(lái)說(shuō)更好用。舉例來(lái)說(shuō),如果你有一個(gè)控制燈光漸明漸暗的腳本,你就完全可以使用協(xié)同函數(shù)來(lái)替代Update函數(shù)。這樣的話,在大多數(shù)時(shí)間燈光不變化的時(shí)候,系統(tǒng)的開(kāi)銷(xiāo)會(huì)很小。如果這一過(guò)程是在Update函數(shù)中執(zhí)行的話,Update函數(shù)會(huì)一直檢測(cè)是否需要執(zhí)行漸變。



      盡量不要使用搜索物體的函數(shù)。


      比如GameObject.FindByTag()和
      GameObject.GetComponent(),搜索組件的函數(shù)也一樣盡量少用。搜索就等于遍歷,搜索一次物體就要把所有物體都遍歷一遍,這個(gè)開(kāi)銷(xiāo)我不說(shuō)大家也應(yīng)該都明白。尤其要注意,不要在Update()和FixedUpdate()中使用搜索函數(shù),如果需要的話,最好在Start函數(shù)中使用變量來(lái)獲取一次,之后調(diào)用就直接用這個(gè)變量。



      盡量不要使用SendMessage()函數(shù)或者類(lèi)似的函數(shù)。


      SendMessage()函數(shù)的執(zhí)行速度至少比直接調(diào)用一個(gè)function慢100倍,隨著腳本和函數(shù)的增多,這個(gè)速度會(huì)更慢,所以如果能直接調(diào)用函數(shù)的話就直接調(diào)用。



      關(guān)于JavaScript(Boo)中的動(dòng)態(tài)類(lèi)型。


      在使用JavaScript時(shí),聲明變量的盡量明確指定它的類(lèi)型。


      所有文章歡迎轉(zhuǎn)載,轉(zhuǎn)載必須標(biāo)明文章出自http:///!??!
      (吧主加精!)

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類(lèi)似文章 更多