亂七八糟大雜燴-----Unity|遊戲開發

  • Unity materialget. / set

material的get方法裏面,會判斷_material跟_sharedMaterial是否相同,如果相同,返回_material,如果不同,會新建一個_sharedMaterial的拷貝,並賦值給_material和_sharedMaterial。

material的set方法裏面會把傳入的值賦給_sharedMaterial,並且會再新建一個_sharedMaterial的拷貝,並賦值給_material。(因爲值不同,所以get的時候又會新建一個Material。)

  • public Material material {
  • get {
  • if (_sharedMaterial == _material) {
  • return _material;
  • }
  • _material = new Material (_sharedMaterial);

_sharedMaterial = _material;

  • return _material;
  • }
  • set {
  • _sharedMaterial = value;
  • _material = new Material (_sharedMaterial);
  • }
  • }

Get的時候保證以Share爲準 所以如果兩者不相等 new一份share出來 賦值給mat和share  保證兩者相同

Set的時候保證share爲準,優先設置share,然後new一份出來設置給mat,保證兩者不想同

  • OpenGL ES 3.0 帶來很多新特性

1、支持更多緩衝區對象。在 OpenGL ES 2.0 時中,緩衝區對象的規範有模糊之處。名字一樣緩衝區對象,在實際渲染中對錶現卻有細微的差別。針對這個問題 OpenGL ES 3.0 制定了更詳細對格式規範。新版 OpenGl ES 還增加對 Uniform Buffer Object 的支持。

2、新版 GLSL ES 3.0 着色語言,支持 32 位整數和浮點數據類型以及操作。之前版本的着色語言只支持精度更低的,這樣雖然能夠加快計算的速度,所需的資源也更少,但當着色器的複雜度增加,出錯也隨之增加。同時,新版着色語言的語法更貼近 GLSL。

3、支持遮擋查詢(Occlusion Query)以及幾何體實例化(Geometry Instancing)。通過遮擋查詢,能夠讓 GPU 知道 3D 場景中,哪些物體被其它物體完全遮擋,這些完全被遮擋的物體 GPU 不會去渲染。幾何體實例化是通過對具有相同頂點數據的幾何體,賦予不同的空間位置、顏色或紋理等特徵,從而創造出不同實例對象的技術。這兩個特性都能夠節省硬件資源,提高 3D 圖形渲染的性能。

4、增加多個紋理的支持。包括浮點紋理、深度紋理、頂點紋理等等。

5、多重渲染目標(Multiple Render Targets),讓GPU 一次性渲染多個紋理。

6、多重採樣抗鋸齒(MSAA Render To Texture),讓 3D 物體對邊緣不出現毛刺,可提升圖像效果。

7、使用統一的紋理壓縮格式 ETC:多年來阻礙 OpenGL 發展的一大頑疾,就是沒有統一的紋理壓縮格式,包括 S3TC、GPUs、PVPRTC、ETC 等等。因爲沒有一個統一標準,開發者不得不因爲不同的硬件環境而將紋理重複壓縮多次——尤其對於 Android 開發者而言,這個過程苦不堪言(對用戶來說也有大量的煩惱,比如安裝遊戲數據包時需要自己來識別需要哪種材質的數據包)。顯然,統一紋理壓縮格式,能夠提高開發者對開發效率。但現實中,統一標準這類事情的進展從來沒有快過。這視乎之後開發者與廠商會做出怎樣的反應。Android 4.3 升級到 Open GL ES 無疑是一個好的開始,OpenGL ES 3.0 大量的新特性完全加持,將大幅提高移動平臺圖形特性,提高遊戲圖形效果。

 

  • NGUI的dynamicMat

NGUI的dynamicMat 是DrawCall繪製時使用的材質實例,但是會在重建DrawCall的時候被重新賦值,所以如果你希望動態設置UItexture的材質以及參數,那將會很不穩定。

解決方案 是UItexture單獨放在一個panel下,避免DC重建將材質參數重新賦值

 

  • AB疑問:

文件夾的AB名,決定路徑下邊所有資源都被打進去麼 ? 文件夾不可設置AB名字

非resource下的文件,沒有引用但設置了ab名字,會被自動打包進去? 是的

AB規則。 Resource下強制打包-> 依賴關係->ab名字 是的

 

  • Unity的一種變態異常

Unity極少情況下,導入資源未觸發資源reimport,ab名字未刷新,導致打包後按照錯誤的AB名字加載資源,造成閃退

 

  • AssetBundle 壓縮格式:

BuildAssetBundleOptions.None  默認lama壓縮格式,是一種默認的壓縮形式,這種標準壓縮格式是一個單一LZMA流序列化數據文件,並且在使用前需要解壓縮整個包體。LZMA壓縮是比較流行的壓縮格式,能使壓縮後文件達到最小,但是解壓相對緩慢,導致加載時需要較長的解壓時間

BuildAssetBundleOptions.UncompressedAssetBundle

不壓縮的方式,打包後包體會很大,,導致很佔用空間,但是一旦下載Assetbundle,訪問非常快。不推薦這種方式打包,因爲現在的加載功能做的很友好了,完全可以用加載界面來進行後臺加載資源,而且時間也不長

BuildAssetBundleOptions.ChunkBasedCompression

LZ4壓縮格式,Unity支持LZ4壓縮,能使得壓縮量更大,而且在使用資源包前不需要解壓整個包體。LZ4壓縮是一種“Chunk-based”算法,因此當對象從LZ4壓縮包中加載時,只有這個對象的對應模塊被解壓即可,這速度更快,意味着不需要等待解壓整個包體。LZ4壓縮格式是在Unity5.3版本中開始引入的,之前的版本不可用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章