簡體   English   中英

Unity:如何將整個 2D 精靈場景調整為任何屏幕分辨率?

[英]Unity: How to resize a whole 2D sprite scene to any screen resolution?

伙計們。 我們正在為桌面和移動設備開發一個 2D 游戲,它是基於網格的,盡管我們決定不使用 tilemaps,而是通過代碼創建我們自己的網格。 因為我們需要為每個圖塊編寫不同的動作和交互。 游戲 UI 位於 canvas 上,該部分按我們的預期調整大小,此外,兩者的“功能方面”都已經運行良好。 移動和桌面,問題在於,當我們將主網格和對象制作為精靈時:它在任何 16,9 屏幕上都能很好地工作。 但是當它在任何更寬的屏幕上運行時,一些屏幕空間會被削減。

我們如何根據屏幕尺寸調整整個精靈場景的大小? 我想這與相機有關,而不是與實際物體有關,但我們沒有明確的線索。 我們已經研究過“像素完美的相機”,雖然我們還沒有深入研究它,但它看起來更多的目的是為了以全分辨率保存藝術品,而不是我們所需要的。

這個來自我們正在開發游戲的 PC,它看起來應該是這樣的: 在此處輸入圖像描述

這一張來自屏幕更寬 (16:10) 的 PC,場景從側面被裁剪(在上一張圖片中,我用橙色/黃色標記了這張圖片中丟失的列) 在此處輸入圖像描述

我想應該有一種方法可以拉伸所有精靈以適合屏幕,但我認為 go 的最佳方法是在頂部和底部或兩側獲得空的水平或垂直條,以保持准確的比例,這就足夠了。 但是怎么做呢?

提前致謝。

解決了! ephb給我的好主意開始,我最終決定在屏幕寬度和高度之間獲得一個參考百分比。 所以,對於 1920x1080,這是我知道游戲看起來正確的分辨率,我做了一個三的規則,得到 1080 是屏幕寬度的 56.25%,在這種情況下,相機尺寸應該是 5。

知道這兩個元素后,現在我可以檢查用戶設備的高度比例,並使用另一個三的規則計算正確的相機尺寸,如下所示:

Camera cam;
void Awake()
{
    cam = Camera.main;
    cam.orthographicSize = GetHeightProportion() * 5 / 56.25f; //1920x1080 reference ---
}

float GetHeightProportion()
{
    return ((float)Screen.height * 100) / (float)Screen.width;
}

我認為您正在尋求調整任何寬高比而不是屏幕分辨率。 您使用游戲 window的縱橫比下拉菜單來查看它的外觀,而無需在不同的計算機上運行它。

默認設置是相機的垂直視野保持不變。 由於 16:10 的顯示器更高,這會導致您的圖像看起來放大了,邊被切掉了。

由於您使用的是精靈,因此您基本上必須重新創建 canvas 縮放器在世界空間中所做的事情。

您可以移動相機,如果它是透視相機則更改其 FOV,如果它是正交相機則更改其大小或縮放場景。 我將描述第一步。

  1. 獲取屏幕寬度和高度並計算縱橫比。
  2. 與您的目標寬高比進行比較。 (我假設是 16/9)
  3. 使用這個乘數來縮放你的場景/移動你的相機/改變它的視野

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM