そのUnityフォーラムスレッドのコードから始めましょう。
var widest = 0f;
foreach (var item in _inputMines.GetComponentsInChildren<Text>()) {
widest = Mathf.Max(item.preferredWidth, widest);
}
_inputMines.GetComponent<LayoutElement>().preferredWidth = widest + 40;
最大幅を許可したいので、これより長いコンテンツは切り捨てられます。それでは、その変数を追加してみましょう。
var maxWidth = 250f;
//or whatever value; you may wish this to be a property so you can edit it in the inspector
var widest = 0f;
foreach (var item in _inputMines.GetComponentsInChildren<Text>()) {
は、今、私たちは2つの幅の値の小さいを使用しています。 その後コンテンツのレイアウトにそれを適用します。それは、スクロールバーを扱うため
}
widest = Mathf.Min(maxWidth, widest);
_inputMines.GetComponent<LayoutElement>().preferredWidth = widest + 40;
は+40
が保持されるべきです。これを考慮に入れて、maxWidth値を選択する必要があります。
最後に、長いアイテムをうまくカットしたいと考えています。
各ドロップダウンアイテムにRect Mask 2Dコンポーネント(コンポーネント - > UI - > Rect Mask 2D)を付けます。テンプレートオブジェクトは、ゲームが実行される前にシーン階層に存在し、無効になっています。親トランスフォームにコンポーネントを追加するだけで、イメージを持つトランスフォームを追加することができます(テキストがクリップされます)。
マスクが画像のグラフィックと同じ幅をカバーし、それに沿って拡大するようにする必要があります。画像の境界線が描画される前にテキストが切り取られるように、X方向に少し短くします。これは自動的に行われるはずですが、テンプレートオブジェクトを確認し、場合によってはそれを変更する必要があります。代わりに、画像マスクを使用することもできますが、あなたはそれを自分で演奏しなければなりませんが、非長方形のクリッピングが可能です。
これだけです!