Unityで480x320の解像度(ビルド設定で設定)で作成したゲームを持っています。しかし、私はすべてのAndroidデバイスすべての解像度でゲームを公開したいと思います。どうすれば、Unityにゲームをデバイスの解像度にスケールアップするように指示することができますか?それは可能ですか?
前もって感謝します!
あなたの質問に対する答えは、ゲームをどのように実装したかに大きく依存します。 GUIテクスチャを使用して作成した場合、オブジェクトの配置/サイズ設定と画面サイズの違いに大きく依存するため、少し注意が必要です。
ゲームの大部分がオブジェクト(平面、立方体など)を使用して行われる場合、私が通常使用する2つの方法があります。
1)最初の方法は、実装が非常に簡単ですが、常に見栄えが良いとは限りません。カメラのアスペクト比を変更して、ゲームを設計したアスペクト比に合わせることができます。したがって、あなたのケースでは、4:3でゲームを設計したので、次のようにします。
Camera.aspect = 4f/3f;
ただし、16:9の画面で誰かがプレイしている場合、ゲームはゆがんで伸びたように見えます。
2)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);
これは魔法のように機能します
2Dゲームで正投影カメラをスケーリングするためのスクリプトは次のとおりです
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);
}
これを行う簡単な方法は、ターゲットを検討することです。つまり、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;
}
3Dではなく2Dだと思いますが、これは do です。
そして、このスニペットをメインのCanvasのAwakeメソッドに追加します。
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オブジェクトの場合、上記の答えのいずれかを使用できます