UnityゲームをAndroidに移植する際の解決の問題


9

それで、Unity3Dで初めてゲームをAndroidに移植します。途中でいくつかの問題に遭遇しました。私の現在の問題は、解像度が正しくないようで、画面の端が途切れ、画面を左/右にスクロールするためのスクロールストップが正しい場所にないということです。

少し調査した後、多くの人が、すべてのAndroid / Iphone / Ipadで実行できるようにするには、ゲームを解像度に依存しないようにする必要があると言います。これは本当ですか?もしそうなら、私はそれをどうやってやりますか?そうでない場合、どうすれば解像度を修正できるので、モバイルデバイスに移植したときに正しく表示されますか?

編集:私はまだ本当に必要なものを持っていません、解像度はまだ以下にリストされているコードとトリックを使っても正しく機能していません。デバイスに基づいて解像度を調整する方法が必要です。何らかの理由でMungoidのコードを使用してデバイスの解像度を取得しようとすると、0x0が返されます


1
特定の画面解像度を想定し、現在の画面解像度を取得して何かを実行できるようにコードを変更する必要があります。何をどのように行っているかによって、万能のソリューションはありません。
Tetrad 2012

遠く仕様などのように、この質問は、いくつかの詳細(サイト上でこのことについて質問がたくさんある)に入るgamedev.stackexchange.com/questions/51/...
テトラッド

ああ、それで基本的にNamarは言った:「比率ですべてを配置することを確認してください。たとえば、ヘルスバーは画面幅の80%に配置され、水平スケールの画面幅の10%が配置されます。宇宙の特定の領域?画面のスクロールは、ワールドスペースの特定の領域に基づいて行われますが、解像度の変更に混乱するようです。
ティモシーウィリアムズ

問題について具体的に教えてください。あなたは、解像度が「正しくないように思われます」と言い、それは「まだオフ」です-しかし、画面の解像度は通常、デバイスの固定プロパティです。したがって、間違っているのは解像度ではなく、画面にレンダリングする方法です。画面の幅と高さを想定すると、さまざまなデバイスやアスペクト比で常に問題が発生します。
カイロタン2012年

私が実際にしようとしているのは、最低解像度を見つけるコードを記述し、ゲームをそれに設定し、それに応じてすべてのオブジェクトをスケーリングすることです。プレイフィールドのスケールを設定する方法は知っていますが、デバイスの解像度を取得できないようです。したがって、ゲームが「ズームイン」されているか、すべてが大きすぎます。
ティモシーウィリアムズ

回答:


7

Androidで発生する問題は、デバイスごとに独自の画面サイズ、解像度、ピクセル密度があることです。ゲームをすべてのデバイスで同じように見せたい場合は、多くの作業を行っているためおそらく結果に満足することはできません。ワイドスクリーンディスプレイではゲームが引き伸ばされて表示されるか、ワイドスクリーンディスプレイ以外では圧縮されて表示されます。本当に重要なことを決めて、他のことは少しスライドさせてください。

スクリーンショットや、ゲームの内容やその外観についての知識がなければ、私たちはすべて解決策を推測することができますが、特定の助言を与える特定の方向性はありません。

Unityでは、Screenクラス:Screen.widthScreen.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 */
}

画面の幅と高さに基づいてカメラのアスペクト比を設定しても効果はありません。電話が垂直の場合はまったく表示されず、電話が水平の場合は以前とまったく同じように表示されます。ゲームは、あなたの指(怒っている鳥のように)とセクション間smoothelyスクロール、三つのセクションに分割され、ここにある左側が見えるようになっているものの絵が。そして真ん中。スマートフォンを
ティモシーウィリアムズ

そして、ここが水平です。これらの写真がお役に立てば幸いです。UnityからAndroidへの移植、またはAndroidゲームの作成は初めてです。少し迷ってしまいました。
ティモシーウィリアムズ、

説明と写真の(私の解釈)から判断すると、問題は解決策ではありません。カメラが、望みのすべてを小さな画面に表示できる場所にない。レベルを小さくするか、カメラを後ろに移動して、より多くまたは何かを表示します。ゲームウィンドウをはるかに小さいサイズに設定して、実際のデバイスのサイズを表す現在の1230x530のサイズではなく、実際のデバイスのサイズを表すことをお勧めします。
chaosTechnician 2012年

問題は、カメラをかなりズームアウトしたことです。この問題が解決しない場合、さまざまな画面とサイズを正確に考慮し、それをどのように修正できますか?
ティモシーウィリアムズ

@TimothyWilliams、あなたはおそらくあなたのゲームが動作する最小の解像度(800x600か何か)を選ぶことで何かを解決することができるでしょう。次に、Screen.width.heightを併用してCamera.fieldOfViewCamera.aspect任意の画面サイズで同じビューを再現します。それを行う方法を具体的に理解するには、いくつかのトリガーが必要です。
chaosTechnician 2012年

0

次のようなものを試して適用することができます。モバイルデバイスは1つの解像度しか返さないはずです。

function Start()
{
    var resolutions : Resolution[] = Screen.resolutions;
    // Print the resolutions
    for (var res in resolutions) {
        print(res.width + "x" + res.height);
    }
    // Switch to the lowest supported fullscreen resolution
    Screen.SetResolution (resolutions[0].width, resolutions[0].height, true);
};

Unityの画面に関する詳細については、こちらもご覧くださいhttp://unity3d.com/support/documentation/ScriptReference/Screen.html


これは私を助けませんでした、解像度はまだオフです。
ティモシーウィリアムズ、

なんらかの理由でAndroidで「0x0」が返されます...
Timothy Williams、
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.