2016-10-04 5 views
-2

ユニティIDEを使用してUI要素(ボタン、ラベルなど)を含むパネルを設計し、このパネルを記述するC#クラスを生成することが可能かどうかを知りたいと思います。ユニティを使用してUIコードを生成する

たとえば、Visual Studioでは、Windowsフォームデザイナを使用すると、Form.Designer.csファイルが自動的に生成されます。このファイルでは、フォーム上のすべてのUI項目が宣言され、初期化され、プロパティが設定されます。どのようにして統一して達成することができますか?

+3

あなたの質問に対する答えは、_yes_ – MickyD

+2

@MickyDです。それでも私は同意します。 –

答えて

3

UI要素はGameObjectsの「単なる」コンポーネントなので、スクリプトを使用してUI要素を作成できます。

しかし、 "より良い"アイデアは、既に構成されたコンポーネントでPrefabsをインスタンス化することであり、いくつかの値を変更して要素を配置するだけです。

対象についてはこちらをユニティのドキュメントを参照してください:

https://docs.unity3d.com/Manual/HOWTO-UICreateFromScripting.html


UNITY 5.4

あなたが動的なUIを作成する場合は、スクリプト

からUI要素を作成しますユーザーの操作やその他の操作に基づいてUI要素が表示、消滅、または変更される場所カスタムロジックに基づいて新しいUI要素をインスタンス化するスクリプトを作成する必要があります。

簡単に動的UI要素をインスタンス化することができるようにするためにUIエレメント

のプレハブを作成し、最初のステップは、あなたがインスタンス化できるようにしたいUI要素のタイプのためのプレハブを作成することです。 UIエレメントをシーン内で見たいように設定し、エレメントをプロジェクトビューにドラッグしてプレハブにします。

たとえば、ボタンのプレハブは、ImageコンポーネントとButtonコンポーネントを持つゲームオブジェクト、Textコンポーネントを持つ子ゲームオブジェクトです。必要に応じて設定が異なる場合があります。

ビジュアルなどのさまざまなコントロールを作成するためのAPIメソッドがない理由が不思議に思うかもしれません。その理由は、無限の数の方法が存在するからである。ボタンを設定することができます。画像、テキスト、またはその両方を使用していますか?たぶん複数の画像ですか?テキストのフォント、色、フォントサイズ、および配置は何ですか?画像で使用するスプライトまたはスプライトは?プレハブを作り、それをインスタンス化することによって、あなたは望むように正確に設定することができます。後でUIのルックアンドフィールを変更したい場合は、プレハブを変更するだけで、ダイナミックに作成されたUIを含め、UIに反映されます。

UI要素の

プレハブがインスタンス化方法を用いて、通常のようにインスタンス化されるUI要素をインスタンス化。インスタンス化されたUI要素の親を設定する場合は、worldPositionStaysパラメータをfalseに設定してTransform.SetParentメソッドを使用することをお勧めします。

位置決め

A UI要素は、通常、そののRect変換を使用して配置されているUI要素。 UIエレメントがレイアウトグループの子である場合、UIエレメントは自動的に配置され、位置決めステップはスキップできます。

Rect Transformを配置するときは、最初にそれがストレッチビヘイビアを持つかどうかを判断すると便利です。ストレッチングの動作は、anchorMinプロパティとanchorMaxプロパティが同一でない場合に発生します。

非伸張Rect Transformの場合、anchoredPositionとsizeDeltaプロパティを設定すると、最も簡単に位置が設定されます。 anchoredPositionは、アンカーに対するピボットの位置を指定します。 sizeDeltaは、ストレッチがないときのサイズとちょうど同じです。

stretch Rect Transformでは、offsetMinプロパティとoffsetMaxプロパティを使用して位置を設定する方が簡単です。 offsetMinプロパティは、左下のアンカーを基準にして、矩形の左下隅の角を指定します。 offsetMaxプロパティは、右上のアンカーを基準にして、矩形の右上隅の角を指定します。あなたが動的に複数のUI要素をインスタンス化している場合はUIエレメント

をカスタマイズ

、それはあなたがそれらすべてが同じを見て、同じことをしたいと思うことは考えにくいです。メニュー内のボタンでも、在庫内のアイテムでも、何か他のものであっても、個々のアイテムは異なるテキストやイメージを持ち、相互作用するときには別のものを作ってほしいでしょう。

これは、さまざまなコンポーネントを取得し、それらのプロパティを変更することによって行われます。イメージとテキストコンポーネントのスクリプトリファレンス、およびスクリプトからUnityEventを操作する方法については、スクリプトリファレンスを参照してください。

+0

私は公式Unityのドキュメントをページのコピー貼り直前に引用しました:) 私は壊れたリンクに何度も直面しています。これがページをコピーして貼り付けようとした理由です。 – Hellium

+0

いいですね、上記のように黄色になっていることを確認してください。それ以外の人はあなたの作品だと思っています。 :) – MickyD

+1

ああ、申し訳ありません、私は次回を忘れないでしょう!ありがとう、ミッキー! :) – Hellium

関連する問題