原创 unity內置shader

Standard RenderingMode: Opaque爲實體渲染,更改Color的透明通道不會有影響; Cutout會把圖片的透明通道顯示出來,非嚴格意義上講與Opaque想反; Fade模式下更改透明通道

原创 Unity實現動態資源加載的5種方式

Resources(只能加載Resources目錄中的資源) AssetBundle(只能加載AB資源,當前設備允許訪問的路徑都可以) WWW(可以加載任意處資源,包括項目外資源(如遠程服務器)) AssetDatabase(只能加載Ass

原创 Unity AssetsBundle

什麼是AssetsBundle AssetBundle(簡稱AB包)是一個資源壓縮包,包含模型、貼圖、預製體、聲音、甚至整個場景,可以在遊戲運行的時候被加載; AssetBundle自身保存着互相的依賴關係; 壓縮包可以使用LZMA和LZ

原创 擁塞避免算法、快重傳、快恢復、慢啓動

慢啓動 初始cwnd=1,然後: 當cwnd<ssthresh時,慢啓動門限之前成倍增加 當cwnd=ssthresh,都可以 當cwnd>ssthresh,啓用擁塞避免算法(線性增長) 當網絡出現擁塞:發送方沒即使收到接收方的確認時,s

原创 Unity Drawcall、渲染順序、打包圖集、特效清理、代碼優化

什麼是DrawCall drawcall是CPU對底層圖形繪製接口的調用命令GPU執行渲染操作,渲染流程採用流水線實現,CPU和GPU並行工作,它們之間通過命令緩衝區連接,CPU向其中發送渲染命令,GPU接收並執行對應的渲染命令。 Draw

原创 printf是如何實現變長參數的

因爲參數是從右向左入棧的,那麼也就是說如果知道最左邊的起點以及類型就可以實現變長參數

原创 圖集的作用

減少draw call: 多張圖片需要多次draw call,合成了一張大圖則只需要一次draw call。 減少內存佔用:OpenGL ES中每張貼圖都需要設置成2的n次方纔能使用。比如你有一張寬高爲100x100和一張寬高爲10

原创 (*(void(*)())0)();

分析 void(*)()是一個函數指針 *(void(*)())0是說取0這個地址的函數 (*(void(*)())0)()表明函數調用

原创 C++ static_cast和dynamic_cast

使用場景 static_cast 靜態類型轉換。如int轉化成char reinterpret_cast 重新解釋類型 dynamic_cast 命名上理解是動態類型轉換,如子類和父類之間的多態類型轉換 const_cast 字面上理解就是

原创 Unity中協程和線程的區別

協程(協同程序): 同一時間只能執行某個協程。開闢多個協程開銷不大。協程適合對某任務進行分時處理。 線程: 同一時間可以同時執行多個線程。開闢多條線程開銷很大。線程適合多任務同時處理。 參考:https://www.cnblogs.com/

原创 UGUI遮罩

MASK Mask(遮罩)是一種不可見的UI組件,它可以用來修改子物體的外觀。遮罩將子物體限制爲父物體的形狀。如果子物體大於父物體將只顯示和父物體大小相同的那一部分。

原创 unity中的協程

參考: https://www.iteye.com/blog/dsqiu-2029701 https://www.cnblogs.com/zblade/p/9857808.html 關鍵詞 IEnumerator public interf

原创 c/c++編譯的程序佔用的內存分配

一個由c/c++編譯的程序佔用的內存分爲以下幾個部分: 棧區 由編譯器自動分配釋放,存放函數的參數值,局部變量的值等。 堆區 一般由程序員分配釋放,若程序員不釋放,程序結束時可能由os回收。 全局區(靜態區) 全局變量和靜態變量的存儲是放在

原创 右值引用、移動構造函數和move

右值引用 右值一般指的是無法用&取到存儲地址的。比如常量10 那麼我們可以使用&&來獲得右值 int &&j=10; int e=10; int &&j=e;//錯誤,因爲e是左值 移動構造函數 #include <iostream> u

原创 GAMES101 Rasteriztion

光柵化 光柵化描述的主要過程就是將點繪製在屏幕上。我們將屏幕劃分成m*n個像素 採樣 假設我們想把一個三角形顯示在屏幕上,我們需要知道是哪些像素在三角形中。因此,我們一般將像素中心點對三角形相交的位置進行採樣(如果在其中就認爲這個像素是被填