1

私は Unity3D を使用しており、アプリケーションのさまざまな GUI コンポーネントをレイアウトするために OnGUI 内で呼び出される関数があります。通常、ラベルとボタンはすべて、私が用意した特定の Rect 内にあり、画面の中央にあります。

そこに問題はありません...しかし、私が望むのは、まったく同じGUI要素を動的にすることができるため、プレハブテクスチャに入れるだけでなく、横にある台形の領域にレンダリングすることです。その GUI は実際には平面上にあり、画面の中心から押しのけられ、わずかに回転していました。関数で描画されたすべての GUI ボタン​​は、引き続き正常に応答するはずです。

GUI.matrix でいくつかの値を指定して四角形を台形にマッピングできることを望んでいましたが、最初の調査では、GUI 要素が同次座標を使用しているようには見えず、すべてが依然として四角形として表示されることが示されているようです。

理想的にはプロ専用機能へのアクセスを必要とせずに、Unity でこれを行う方法はありますか?

4

2 に答える 2

2

今のところ、 Unity3DGUI システムはあまり柔軟ではありません。新しい GUI システムは、まだリリースされていない機能の 1 つです(Unity 4私たちはそれを待っています)。

私の観点からは、特に次のようないくつかの問題があります。

  • より宣言的な (または少なくともより構造化された) 方法ではなく、コードの流れを使用してコンポーネントをレイアウトする必要があります。
  • これは非常に非効率的です (少なくとも 1 つのボタンの描画呼び出し)。
  • それはまったく柔軟ではありません。追加、削除、有効化/無効化ボタンは、ボタンの数が増えると面倒な操作になります。

ただし、私が望むのは、まったく同じ gui 要素をレンダリングすることです。これは動的にすることができるため、プレハブ テクスチャに入れるだけでなく、横にある台形の領域に入れ、その gui が実際に上にあるかのように見せます。平面で、画面の中心から押し出され、わずかに回転しています。関数で描画されたすべての GUI ボタン​​は、引き続き正常に応答するはずです。

UnityGUIクラスを使用して取得することは、不可能ではないにしても非常に困難です。

2つの可能性があります:

  1. GUIそのためにクラスを使用しないでください。十分に単純な場合GUIは、次の例を使用して独自の (3D であっても) ボタンを実装できます。
    • ボタンの背景用のテクスチャを含むメッシュ (平面または台形メッシュ)
    • 3D テキストを描画するためのTextMesh
    • ボタンが押されたかどうかを確認するRayCasting
  2. NGUIなどのより高度な GUI システムを実装するライブラリを使用する
于 2013-03-16T22:58:06.290 に答える
0

同じ問題に遭遇したとき、私はテクスチャ付きの通常の 3D ゲームオブジェクト キューブを使用し、それらをOnMouseDown(PC/Mac) またはRayCasting(Android/iOS) で呼び出しました。みんなそうしてるんだろうな。

于 2013-03-17T19:38:11.487 に答える