Androidで発生する問題は、デバイスごとに独自の画面サイズ、解像度、ピクセル密度があることです。ゲームをすべてのデバイスで同じように見せたい場合は、多くの作業を行っているため、おそらく結果に満足することはできません。ワイドスクリーンディスプレイではゲームが引き伸ばされて表示されるか、ワイドスクリーンディスプレイ以外では圧縮されて表示されます。本当に重要なことを決めて、他のことは少しスライドさせてください。
スクリーンショットや、ゲームの内容やその外観についての知識がなければ、私たちはすべて解決策を推測することができますが、特定の助言を与える特定の方向性はありません。
Unityでは、Screenクラス:Screen.width
とScreen.height
(他のプロパティの中でも)を使用して現在の画面のサイズにアクセスできます。次に、Cameraのアスペクト比を変更して、画面のサイズと表示されるものに対する個人的な期待に基づいて、さまざまなサイズの画面に表示されるものを変更できます。
HUDディスプレイが適切にスケーリングされるようにする必要がある場合は、すべての関数の画面の次元に基づいてGUI変換行列を変更することにより、これを行うことができOnGUI()
ます。私は以前に、この単純なスクリプトを作成し、スケーリングしたいGUI要素をレンダリングするものにアタッチすることでそれを実行しました。
//GUI values in code are assigned based on an 800x600 screen
private var nativeWidth : float = 800.0f;
private var nativeHeight : float = 600.0f;
private var guiMatrix : Matrix4x4;
function Start ()
{
var scale : Vector3 = Vector3(Screen.width / nativeWidth,
Screen.height / nativeHeight,
1.0f);
guiMatrix = Matrix4x4.TRS(Vector3.zero, Quaternion.identity, scale);
}
function GetGUIMatrix() : Matrix4x4
{
return guiMatrix;
}
次に、実際のOnGUI()
関数で、変換行列をすぐに設定します。
function OnGUI()
{
GUI.matrix = guiScale.GetGUIMatrix();
/* Everything Else */
}