Image(UGUI)組件(不受Z軸影響)
渲染
基於CanvasRender和Image組件進行渲染
默認材質渲染隊列為Transparent Geometry,開啟模板測試,渲染順序是基於Canvas的Order In Layer層級,由Canvas邏輯進行管理
默認的渲染網格為正方形,更多的片元着色器操作
可以實現基於圖集打包和網格數據合並,在此Canvas下實現渲染批處理
交互
檢測邏輯
根據Unity層級面板順序把Image組件加入隊列,通過UGUI的EventSystem的Update來每幀遍歷所有Canvas下需要檢測的對象。通過Image組件的IsRaycastLocationValid方法來檢測是否能穿透點擊區域,中間的測試包含渲染圖片的Alpha值,以及距形區域的交點測試。可以通過開關組件上的Raycast Target選項來控制是否需要響應對應的檢測邏輯。
事件響應
可以通過掛載UGUI自身繼承IEventSystemHandler接口的組件,對相應組件添加事件來實現事件邏輯的響應,如Button,Toggle
使用
通常應用於UI界面,由於是UGUI自身的組件,提供了更多UI組件交互支持,而且Image組件統一交由Canvas進行管理,渲染順序可以通過Unity檢視面板層級直接看到,方便開發。完美的UI自適應方案,可以通過Canvas Scaler來實現渲染分辨率大小的自適應,以及基於RectTransform錨點位置來控制Image組件渲染網格的大小和位置。還有交互邏輯是通過二維的交點測試,性能更加優化。
總結
完美適配UI界面的開發,當然,因為他就是UGUI的組件。
SpriteRender組件(受Z軸影響)
渲染
基於SpriteRender組件進行渲染
默認材質渲染隊列為Transparent Geometry,渲染順序由所在渲染隊列以及組件面板上的Order In Layer層級進行管理,如果在同一層級,則通過和攝像機的距離也就是Z軸順序進行渲染
默認的渲染網格根據圖片透明通道,無像素着色的地方會被裁切掉,形成不規則網格,更多的頂點着色器操作
可以實現基於圖集打包和網格數據合並實現渲染批處理
交互
檢測邏輯
為GameObject掛載BoxCollider2D,通過Unity自身的射線進行邏輯檢測
事件響應
通過給GameObject掛載BoxCollider2D,實現MonoBehaviour上的方法來實現響應邏輯,如OnMouseDown。當然這樣的方式大概不夠優雅,我們可以通過編寫一個實現所有MonoBehaviour事件方法的EventListener類再掛載到GameObject上為相應的腳本添加事件
使用
因為Mesh不會根據UI自適應進行拉伸,但是可以通過其Z軸來改變渲染順序,通常應用於平面特效和3D場景中的平面物體。在UI畫面中可以通過控制Order In Layer層級來控制渲染的層級,基於其默認的渲染隊列,可以很好的和UI的層級區分開。在3D場景中,在和3D物體同一個渲染隊列的情況下,可以很好的通過動畫控制Z軸來實現與3D物體的遮擋關系。因為是Sprite所以可以實現基於圖集和網格合並的批處理
總結
除了UI畫面哪都好用,當然在你需要其自建網格和批處理渲染的情況下。
————————————————
版權聲明:本文為CSDN博主「小龍龍丶」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/l783929897/article/details/118257259