1

UIToolkit を使用して、Unity で Android ゲーム プロジェクトの GUI を作成しています。サンプル シーン (キッチン シンクなど) は、Unity エディターで正常に動作します。しかし、Android デバイスでまったく同じサンプル シーンを実行すると、機能しません。ボタンのテクスチャは、実際のタッチ領域からわずかにずれています。さまざまな Android デバイスを試しましたが、結果は同じです。

次のような関数を使用してスプライトの場所にアクセスしようとしました

public float getYpos(this IPositionable sprite )
{
    if(sprite == null)
        return ;
    float toRet = sprite.position.y;
    return toRet;
}

しかし、コードが値を返さない場合は!

「IPositionablePositioningExtensions」を使用して、スプライトの場所を返すことさえ試みました。しかし、成功しません。「IPositionablePositioningExtensions」の使い方はよくわかりませんが、この分野の初心者を始めたばかりです。

私のボタンの作成は次のようになります。

    playButton = UIButton.create("playUp.png", "playDown.png",0,0);
    playButton.positionCenter();
    playButton.scale = new Vector3(0.4f,0.4f,0);

サンプル シーンが Android デバイスでどのように表示されるかを示すスクリーンショットを次に示します。バウンディング ボックスは、ボタン テクスチャが別の場所でレンダリングされている間、タッチが機能する領域です。

ここに画像の説明を入力

Button テクスチャは中央の位置にあるはずですが、タッチ領域が本来あるべき場所にとどまっている間に別の位置に移動します。

4

2 に答える 2

1

解決策を見つけました。onAwake メソッドは、実際の画面サイズとは異なる画面サイズを返します。

そのため、ui.cs ファイルの uiCamera に次のコードを追加しました。

public static void setSize()
    {
        _uiCamera.orthographicSize = Screen.height / 2;
        // Set the camera position based on the screenResolution/orientation
        _uiCamera.transform.position = new Vector3( Screen.width / 2, -Screen.height / 2, -10.0f ); 
    }

これは、画面が設定されると呼び出されます。

于 2013-03-10T05:35:44.993 に答える
0

開発者のサイトのガイドから:(...)UIスクリプトがまだ初期化されていない可能性があるため、AwakeでUIを作成しようとしないでください。代わりにスタートを使用してください。

編集:あなたはawakeメソッドでUIを作成していると思いましたが、私は自分で試してみました。ガイドで提案されているように、startメソッドで作成しても同じ問題があります。次に、ソリューションをテストします。実際、アプリケーションを再起動せずにシーンを変更してUIシーンをリロードすると、すべてが正しく機能します。

于 2013-03-12T12:09:08.893 に答える