1、建議檢查下SystemInfo的引用。這個是什么
Unity的SystemInfo類提供了一種獲取關于當前硬件和操作系統的信息的方法。這包括設備類型,操作系統,處理器,內存,顯卡,支持的Unity特性等。使用SystemInfo類非常簡單。它的所有屬性和方法都是靜態的,所以你
不需要創建SystemInfo的對象。
深入了解Unity的SystemInfo類:一份詳細的技術指南(一)_unity systeminfo-CSDN博客
2、GPU帶寬是什么?
顯存帶寬。顯存帶寬是指GPU讀寫其專用內存的速度。如果我們的游戲速度受限于顯存帶寬,通常可能是我們使用的紋理太大,以至于GPU無法快速處理
內存帶寬是 GPU 可以從內存中執行讀取和寫入的速率
顯存帶寬就是80GB/s
3、mipmap 是什么
Mipmap中每一個層級的小圖都是主圖的一個特定比例的縮小細節的復制品。
雖然在某些必要的視角,主圖仍然會被使用,來渲染完整的細節。
但是當貼圖被縮小或者只需要從遠距離觀看時,mipmap就會轉換到適當的層級。事實上,在三線性過濾(trilinear filtering)起作用時,會在兩個相近的層級之間切換。
mipmap的主要作用便是模型的貼圖會根據攝像機距離模型的遠近而調整不同質量的貼圖顯示,以達到優化目的
4、GPU Skin 是什么?
頂點動畫,將動畫渲染到紋理,通過頂點shader渲染
Gpu Instance
只有使用相同網格 和 相同材質的物體,才可以被 Instance 為一個對象。
在頂點shader中渲染出過個,
- GPU Instance:針對同一個Mesh多次渲染,是圖形框架提供的功能。
https://zhuanlan.zhihu.com/p/524285662
UNITY_ACCESS_INSTANCED_PROP 訪問每個instance的單獨屬性 float4 col= UNITY_ACCESS_INSTANCED_PROP(Props, _Color);
5、垂直同步 是什么?
項目用到動態幀率,60/30頻繁切換,關了垂直同步的。在30切60時,若場景有大量GPU Skin,30到60就特別慢,大概6-7秒。
Edit--Project Settings--VSync Count
刷新率指的是顯示器的刷新率,60Hz就是屏幕一秒會刷新60次畫面
緩沖區是顯卡的緩沖區,顯卡渲染好一張畫面就會把畫面存儲在顯卡的顯存中
打開垂直同步后,當顯示器尚未完成一幀畫面刷新時候,前后緩沖區不允許交換,顯示器刷新完一幀畫面時,緩沖區才可以進行交換,不會在上一幀畫面未顯示完全就開始顯示下一幀造成畫面撕裂,也就是顯卡畫面刷新速度等待顯示器刷新速度,使畫面更流暢。
關閉垂直同步
允許GPU不受刷新率限制進行渲染,并可以在單個刷新間隔對多個渲染幀進行掃描輸出,會產生畫面撕裂
開啟垂直同步
限制GPU最大渲染速率為顯示器的最大刷新率,并防止撕裂,但是由于渲染速率受限,延時可能較長且性能較低。另外,如果GPU渲染速率低于刷新率
6、OnPostprocessAllAssets 怎么使用?
OnPostprocessAllAssets會在每次資源的增刪改后自動執行,那么就有了自動設置asset bundle name的進階版。
using UnityEngine;
using System.Collections;
using UnityEditor;public class AutoGenerateAssetBundleNameImproved : AssetPostprocessor
{static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths){for (int i = 0; i < importedAssets.Length; ++i){Debug.Log("Imported asset: " + importedAssets[i]);}for (int i = 0; i < deletedAssets.Length; ++i){Debug.Log("Deleted asset: " + deletedAssets[i]);}for (int i = 0; i < movedAssets.Length; ++i){Debug.Log("Moved Asset: " + movedAssets[i] + " ---- From: " + movedFromAssetPaths[i]);}}
}
7、aa怎么從streaming加載?
Addressables.LoadAsset