Unity屏幕適配——立項時設置

項目類型:2D游戲、豎屏、URP

其他類型,部分原理類似。

1、確定設計分辨率:750*1334

????????為什么是它?
????????因為它是 iphone8 的尺寸,寬高比適中。
????????方便后續適配到真機的 “更長屏” 或 “更寬屏”

2、在場景中添加 UICamera、MainCamera、UICanvas

????????添加物體及相關組件

????????

3、調整 UICamera 物體的 Camera 組件(URP下)

????????Render Type: Overlay? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (支持多相機顯示,要點)
????????Projection: Orthographic? ? ? ? ? ? ? ? ? ? ? ? ? (正交)
????????Size: 6.67? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(修改將影響 UICanvas 的 Scale 值)(注意,它不影響 Canvas 在 Game 視圖中的占比,因為 Canvas 總是填滿屏幕)
????????ClearDepth:true? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(多相機顯示正確,要點)
? ? ? ? Culling Mask:UI? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(使只渲染UI)

????????

4、調整 MainCamera 物體的 Camera 組件(URP下)

????????Render Type: Base
????????Projection: Orthographic? ? ? ? ? ? ? ? ? ? ? ? ? (正交)(2D游戲)
????????Size: 6.67? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(修改將影響 場景物體在 Game 視圖中的占比)
????????Culling Mask:去掉UI? ? ? ? ? ? ? ? ? ? ? ? ? ? ??(使不渲染UI)
? ? ? ? Stack 中,添加 UICamera? ? ? ? ? ? ? ? ? ? ? ?(相機關聯,支持多相機顯示,要點)

????????

5、調整 UICanvas 物體的 Canvas 組件

????????RenderMode: Screen Space-Camera
????????RenderCamera: 拖入 UICamera
????????SortingLayer: UI

????????

6、設置 UICanvas 物體的 Canvas Scaleer 組件

????????UI Scale Mode: Scale With Screen Size? ? (隨屏幕縮放) ? ? ?
????????Reference Resolution: 750*1334 ? ? ? ? ??????(設計分辨率)
????????Screen Match Mode: Expand ? ? ? ? ? ? ? ??????(總是擴展更大邊)(移動游戲通常采用無黑邊的適配方式)
??????
??Reference pixels Per Unit: 100? ? ? ? ? ? ? ? ? ?(控制精靈像素密度,具體見下方說明)

????????

注意:為什么是 6.67 ?

????????6.67 = 1334/2/100(若為橫屏游戲則為3.75)

其中:
????????1334 :設計分辨率的高(若為橫屏游戲則為750)

????????2 :OrthographicSize 為垂直視體大小的一半(Size屬性用于定義相機視圖的垂直大小)。

???????????Camera-orthographicSize - Unity 腳本 API

????????

????????100:UI坐標系 相對 場景世界坐標系的縮放倍數,即,在 Game 視圖?中??UI 中100像素 = 場景中世界坐標系的 1米

? ? ? ? 這個值來自 Canvas Scaler 的 Reference pixels Per Unit

????????Canvas-referencePixelsPerUnit - Unity 腳本 API

????????

? ? ? ? 為什么它決定了?UI坐標系 相對 場景世界坐標系 的縮放倍數?

? ? ? ? 因為:

? ? ? ? Image(UI坐標系中的物體)?SetNative 后的大小(單位:像素數) = 原圖像素數 / (Sprite 導入設置的 Pixels Per Unit / CanvasScaler設置的 Reference Pixels Per Unit)

????????SpriteRenderer(場景世界坐標系中的物體) 的大小(單位:米) = 原圖像素數 / Sprite 導入設置的 Pixels Per Unit

? ? ? ? 可以看到,兩者差的倍數正是?Canvas Scaler 的 Reference pixels Per Unit? ? ? ??

????????當兩者同時使用一張圖時,在?Game 視圖?中其大小是相同的

????????

對齊之美

????????1、將 MainCamera 的 Size 設為 6.67,將使世界物體 7.5m*13.34米的物體 剛好填充整個 MainCamera 的視口,即剛好填充 Game 視圖??的整個屏幕

????????

????????2、將 UICamera 的 Size 設為 6.67,將使 UICanvas 的 Scale 值為 0.01,在 Scene 視圖?中觀察,UICamera 和 MainCamera 的視口大小是重合的,UI與場景物體大小也是對齊的,完美!???????????????

?????????

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/72376.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/72376.shtml
英文地址,請注明出處:http://en.pswp.cn/web/72376.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

深度學習中LayerNorm與RMSNorm對比

LayerNorm不同于BatchNorm,其與batch大小無關,均值和方差 在 每個樣本的特征維度 C 內計算, 適用于 變長輸入(如 NLP 任務中的 Transformer) 詳細的BatchNorm在之前的一篇文章進行了詳細的介紹:深度學習中B…

使用WireShark解密https流量

概述 https協議是在http協議的基礎上,使用TLS協議對http數據進行了加密,使得網絡通信更加安全。一般情況下,使用WireShark抓取的https流量,數據都是加密的,無法直接查看。但是可以通過以下兩種方法,解密抓…

數字化轉型 - 數據驅動

數字化轉型 一、 數據驅動1.1 監控1.2 分析1.3 挖掘1.4 賦能 二、數據驅動案例2.1 能源工業互聯網:綠色節能的數字化路徑2.2 光伏產業的數字化升級2.3 數據中心的綠色轉型2.4云遷移的質效優化2.5 企業數字化運營的實踐2.6數字化轉型的最佳實踐 一、 數據驅動 從數…

解決 Docker 鏡像拉取超時問題:配置國內鏡像源

在使用 Docker 的過程中,經常會遇到鏡像拉取超時的問題,尤其是在國內網絡環境下。這不僅會浪費大量的時間,還可能導致一些項目無法順利進行。今天,我將分享一個簡單而有效的解決方法:配置國內鏡像源。 環境 操作系統 c…

Linux命令基礎,創建,輸入,輸出,查看,查詢

什么是命令、命令行 命令行:即:Linux終端(Terminal),是一種命令提示符頁面。以純“字符”的形式操作操作系統,可以使用各種字符化命令對操作系統發出操作指令。 命令:即Linux程序。一個命令就…

【GNU Radio】ZMQ模塊學習

【GNU Radio】ZMQ模塊學習 ZMQ 介紹前置知識Socket通信模型PUB/SUB(發布/訂閱)模型PUSH/PULL(推/拉)模型REQ/REP(請求/響應)模型 ZMQ 詳解基于通信模型分析基于數據格式分析Data BlocksMessage Blocks ZMQ …

【筆記】深度學習模型訓練的 GPU 內存優化之旅:綜述篇

開設此專題,目的一是梳理文獻,目的二是分享知識。因為筆者讀研期間的研究方向是單卡上的顯存優化,所以最初思考的專題名稱是“顯存突圍:深度學習模型訓練的 GPU 內存優化之旅”,英文縮寫是 “MLSys_GPU_Memory_Opt”。…

Vue 3 Diff 算法深度解析:與 Vue 2 雙端比對對比

文章目錄 1. 核心算法概述1.1 Vue 2 雙端比對算法1.2 Vue 3 快速 Diff 算法 2. 算法復雜度分析2.1 時間復雜度對比2.2 空間復雜度對比 3. 核心實現解析3.1 Vue 2 雙端比對代碼3.2 Vue 3 快速 Diff 代碼 4. 性能優化分析4.1 性能測試數據4.2 內存使用對比 5. 使用場景分析5.1 Vu…

神經網絡的基本知識

感知機 輸入:來自其他 n 個神經元傳遞過來的輸入信號 處理:輸入信號通過帶權重的連接進行傳遞, 神經元接受到總輸入值將與神經元的閾值進行比較 輸出:通過激活函數的處理以得到輸出 感知機由兩層神經元組成, 輸入層接受外界輸入信號傳遞給…

UE5與U3D引擎對比分析

Unreal Engine 5(UE5)和Unity 3D(U3D)是兩款主流的游戲引擎,適用于不同類型的項目開發。以下是它們的主要區別,分點整理: 1. 核心定位 UE5: 主打3A級高畫質項目(如主機/P…

C++相關基礎概念之入門講解(上)

1. 命名空間 C中的命名空間(namespace)是用來避免命名沖突問題的一種機制。通過將類、函數、變量等封裝在命名空間中,可以避免不同部分的代碼中出現相同名稱的沖突。在C中,可以使用namespace關鍵字來定義命名空間。 然后我們在調…

網絡協議棧

網絡協議棧的位置 用戶在應用層的各種請求最終會下達給操作系統,操作系統內除了進程管理、文件管理、內存管理、驅動管理之外,還有一個內嵌的軟件協議棧,協議棧將用戶的數據進行各種封包后,通過網卡將數據傳遞到網絡當中&#xf…

C#索引器基礎到實踐

1. 封裝和隱藏內部實現 數組是一個簡單的數據結構,它的內部實現是固定的(基于連續內存)。而索引器可以隱藏內部的實現細節,允許開發者使用更復雜的數據結構來存儲數據,同時對外提供類似數組的訪問方式。 示例: 假設你有一個類,內部使用 Dictionary 或 List 來存儲數據…

C++之list類(超詳細)

在上一節中我們學習了STL中的vector這個容器,這節我們來學習一下另外一個常用的容器——list。 文章目錄 前言 一、list的介紹 二、list的使用及相關接口 1.list的使用 2.list的迭代器使用 3.list的相關接口 3.1 list capacity 3.2 list element access 3.3…

mysql、oracle、SQLserver之間的區別和優勢

MySQL、Oracle和SQL Server都是常見的關系型數據庫管理系統(RDBMS),它們在某些方面有一些區別和優勢。 MySQL: MySQL是一種開源的RDBMS,由Oracle公司開發和維護。它具有快速、穩定和易于使用的特點。MySQL適用于中小型…

Python依賴包遷移到斷網環境安裝

首先,我應該確認兩臺電腦的操作系統都是Windows,所以架構和版本應該兼容。Python版本必須一致,否則可能會有問題。比如,如果電腦B用的是Python 3.8.5,電腦A也得裝同樣的版本,否則有些包可能不兼容。所以第一…

75.HarmonyOS NEXT ImageItemView組件深度剖析:手勢交互與動畫實現(二)

溫馨提示:本篇博客的詳細代碼已發布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下載運行哦! HarmonyOS NEXT ImageItemView組件深度剖析:手勢交互與動畫實現(二) 一、手勢系統架構 .gesture(GestureGroup(GestureMode.Exclusiv…

Qt 控件概述 QWdiget

Qt為我們提供了很多控件,這些控件拿過來就可以使用 目錄 QWidget 屬性 WindowFrame的影響 QWidget Qt中所有的組件都是繼承自QWidget Qt Creator中的右側可以看到QWidget的各種屬性 其中各種屬性都可以在Qt文檔中找到說明 ? 屬性 enabled:描述該組…

適合企業內訓的AI工具實操培訓教程(37頁PPT)(文末有下載方式)

詳細資料請看本解讀文章的最后內容。 資料解讀:適合企業內訓的 AI 工具實操培訓教程 在當今數字化時代,人工智能(AI)技術迅速發展,深度融入到各個領域,AIGC(人工智能生成內容)更是成…

Axios 請求取消:從原理到實踐

Axios 請求取消:從原理到實踐 在現代前端開發中,網絡請求是不可或缺的一部分。Axios 是一個基于 Promise 的 HTTP 客戶端,廣泛應用于瀏覽器和 Node.js 環境中。然而,在某些場景下,我們可能需要取消正在進行的請求&…