簡體   English   中英

如何編寫我的游戲以處理Android設備的每個分辨率? (使用Unity)

[英]How can I code my game to work on every resolution of Android devices? (with Unity)

我有一個游戲,我在Unity中以480x320的分辨率(我在構建設置中設置了它)。 但我想為每個Android設備發布我的游戲,每個分辨率。 我怎么能這樣做,告訴Unity將我的游戲擴展到設備的分辨率? 有可能嗎?

提前致謝!

你的問題的答案在很大程度上取決於你如何實現游戲。 如果你使用GUI紋理創建它,那么它在很大程度上取決於你如何放置/調整對象的大小與屏幕大小,這使得事情有點棘手。

如果您的游戲的大部分是使用對象(例如飛機,立方體等)完成的,那么我通常會選擇使用兩種方法。

1)第一種方法很容易實現,但並不總是看起來太好。 您只需更改相機的縱橫比即可與您設計的游戲相匹配。 所以在你的情況下,既然你在4:3設計了你的游戲,你就會做這樣的事情:

Camera.aspect = 4f/3f;

然而,如果有人在16:9的屏幕上玩游戲,游戲最終會變得扭曲和伸展。

2)第二種方法並不容易,需要相當多的工作和計算,但會為您提供更清晰的結果。 如果您使用的是正交相機,請記住一件重要的事情是,無論使用何種屏幕分辨率,正交相機都會將高度保持在設定的高度,並且只會改變寬度。 例如,使用尺寸為10的正交相機,高度將設置為2.考慮到這一點,您需要做的是補償每個級別內最寬的相機(例如,具有寬背景)或動態更改相機的正交尺寸,直到其寬度與您創建的相匹配。

如果你用立體相機做了3D游戲,屏幕分辨率不應該真正影響它的外觀,但我想這取決於游戲,所以需要更多的信息

我的方法是根據設備縱橫比改變相機視口。考慮你制作了800x1280的游戲

您可以在任何一個腳本中執行此操作

float xFactor = Screen.width / 800f;
float yFactor = Screen.height  / 1280f;


Camera.main.rect=new Rect(0,0,1,xFactor/yFactor);

這就像魔法一樣

一個簡單的方法是考慮你的目標,我的意思是如果你正在為Iphone 5做游戲,那么寬高比是9:16 v或16:9 h。

   public float targetRatio = 9f/16f; //The aspect ratio you did for the game.
void Start()
{
   Camera cam = GetComponent<Camera>();
   cam.aspect = targetRatio;
} 

這是我在2D游戲中縮放ortographic相機的腳本

public float screenHeight = 1920f;
public float screenWidth = 1080f;
public float targetAspect = 9f / 16f;
public float orthographicSize;
private Camera mainCamera;

// Use this for initialization
void Start () {

    // Initialize variables
    mainCamera = Camera.main;
    orthographicSize = mainCamera.orthographicSize;

    // Calculating ortographic width
    float orthoWidth = orthographicSize / screenHeight * screenWidth;
    // Setting aspect ration
    orthoWidth = orthoWidth / (targetAspect / mainCamera.aspect);
    // Setting Size
    Camera.main.orthographicSize = (orthoWidth / Screen.width * Screen.height);
}

我假設它是2D而不是3D,這就是我所做的

  1. 創建一個畫布對象
  2. 將Canvas縮放器設置為按屏幕大小縮放
  3. 將參考分辨率設置為例如:480x320
  4. 將屏幕匹配模式設置為與高度匹配
  5. 如果當前屏幕寬度較小,則將匹配設置為1;如果高度較小,則將匹配設置為0
  6. 在“畫布”中創建圖像作為背景
  7. 添加Aspect Ratio Fitter腳本
  8. 將Aspect Mode設置為Fit in Parent(因此UI錨點可以在任何位置)
  9. 將寬高比設置為480/320 = 1.5

並在主Canvas'喚醒方法上添加此代碼段:

var canvasScaler = GetComponent<CanvasScaler>();
var ratio = Screen.height / (float) Screen.width;
var rr = canvasScaler.referenceResolution;
canvasScaler.matchWidthOrHeight = (ratio < rr.x / rr.y) ? 1 : 0;

對於3D對象,您可以使用上述任何答案

對我來說最好的解決方案是使用相交線的定理,這樣既不會在側面產生截止,也不會對游戲視圖造成扭曲。 這意味着您必須后退或前進,具體取決於不同的寬高比。

如果您願意,我在Unity資產商店中擁有一項資產可自動更正相機距離,因此無論您使用哪種手持設備,都不會出現扭曲或中斷。

暫無
暫無

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

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