2017-01-02 6 views
1

私は数ヶ月前にゲームをリリースしました。ディスプレイの解像度の制限を1に設定

私は自宅で追加したデバイス(galaxy note 2、galaxy tab pro、wiko)で多くのテストを行い、ゲームはこれらのデバイスで円滑に動作します。

しかし、最後の日に、私はLG G3デバイスでゲームを実行し、多くのFPSドロップがあります。

ゲームは画面のネイティブディスプレイ解像度(2560 x 1440)で動作するためだと思います。

FullHD(LG G3のような)よりも高いディスプレイ解像度を検出した場合、低解像度でゲームを表示するスクリプトを作成できますか?

私はそれがFPS滴を止めると思う。

答えて

2

https://docs.unity3d.com/ScriptReference/Screen.html

とコンクリートSetResolution方法: https://docs.unity3d.com/ScriptReference/Screen.SetResolution.html

あなたにも、画面のアスペクト比を得るために​​を使用することができます。ここ はScreenクラスの詳細ですすべてのデバイスで

ゲームがポートレートモードの場合は720 * 1280の解像度を使用し、横長モードを使用する場合は960 * 640を使用すると、ゲームはすべてのデバイスで完璧に動作します。

  1. は、お使いのカメラにスクリプトが解像度を変更しないことを知っていましたtargetaspect

using UnityEngine; 
using System.Collections; 

public class CameraResolution : MonoBehaviour { 

void Start() { 
    // set the desired aspect ratio (the values in this example are 
    // hard-coded for 16:9, but you could make them into public 
    // variables instead so you can set them at design time) 
    float targetaspect = 720.0f/1280.0f; 

    // determine the game window's current aspect ratio 
    float windowaspect = (float)Screen.width/(float)Screen.height; 

    // current viewport height should be scaled by this amount 
    float scaleheight = windowaspect/targetaspect; 

    // obtain camera component so we can modify its viewport 
    Camera camera = GetComponent<Camera>(); 

    // if scaled height is less than current height, add letterbox 
    if (scaleheight < 1.0f) { 
     Rect rect = camera.rect; 

     rect.width = 1.0f; 
     rect.height = scaleheight; 
     rect.x = 0; 
     rect.y = (1.0f - scaleheight)/2.0f; 

     camera.rect = rect; 
    } else { // add pillarbox 
     float scalewidth = 1.0f/scaleheight; 

     Rect rect = camera.rect; 

     rect.width = scalewidth; 
     rect.height = 1.0f; 
     rect.x = (1.0f - scalewidth)/2.0f; 
     rect.y = 0; 

     camera.rect = rect; 
    } 
    } 
} 
+0

  • 変更値のスクリプトを添付しますか? – Vancete

  • +0

    はい、異なる解像度に適用可能です。それは1280/720のために書かれていますが、それに応じてより高い解像度と低い解像度で拡大縮小するコードを見ることができます。 –

    +0

    あなたの答えはありがたいですが、デバイスの画面にQHDまたは4kの画面が表示されている場合、私のゲームの解像度をフルHDにダウンサイジングできますか? (ユニティは画面表示の解像度でゲームを実行し、デバイスに2k以上のディスプレイがある場合は非常に消費電力が高いため)。 –

    1

    (結果は良好です)

    基本的に、資産バンドルシステムを使用して、グラフィックスをSDとHD形式で2倍にすることができます。 Unityはそれをサポートしています。アセットバンドルの詳細については、こちらをご覧ください。 https://unity3d.com/learn/tutorials/topics/scripting/assetbundles-and-assetbundle-manager

    画面解像度の検出は簡単です。それにはScreen.widthScreen.heightを使用できます。

    ScreenクラスにはSetResolutionというメソッドがあります。これは、アセットバンドルシステムを使用せずにあなたのためにできることです。私はそれを自分で使ったことはありません。同じカメラの解像度を調整 https://docs.unity3d.com/ScriptReference/Camera-aspect.html

    関連する問題