Tutorials

ユーザインターフェイス - 統計カウンタ

ボタンやプログレスバーの使い方と要素とインタラクトする方法。フルシーンを参照してください。

このチュートリアルでは組み込みのElementを使用して、プラス/マイナスボタンをクリックすることで統計を増やす簡単なウィジェットを作成します。

各統計には、マイナスボタン、プラスボタン、プログレスバー、現在の統計値を表示するテキストが必要です。

階層

階層内のUIは次のようになります:

階層

スクリーン設定

まず、新しい2D Screenを追加します。画面は次のようになります:

スクリーン

2Dのスクリーンなので、スクリーンスペースをチェックしました。リファレンス解像度は、目標とする解像度です。この場合は1080 x 1920です。ScaleモードのBlendを選択して、画面が解像度の変更に適応するようにし、Scale Blendを1に設定して、画面が高さの変化のみに適応するようにします。

統計の設定

各統計用に異なるGroup Elementを作成します。これにより、グループのサブ要素をグループの端に固定することができ、各統計を個別のウィジェットとして扱うことができます。

Boost統計のみを調べます - 他は全く同じです。stats-boostエンティティはビューポートで次のように表示されます:

ブースト

その属性は以下です:

ブーストの属性

ご覧のとおり、すべての要素を含む適切なサイズのGroup Elementコンポーネントがあり、画面の下部に固定されています。また、スクリプト uiStatsが割り当てられているScript Component があります。このスクリプトを使用することで、グループの要素とのインタラクションを処理できます。

階層内でグループは次のように表示されます:

ブーストの階層

グループには次の子要素があります:

スクリプト

ホバーの状態に基づいてテクスチャを変更できるように、各ボタンにスクリプトがあります。これはこちらのチュートリアルにあるスクリプトに似ています。プログレスバーを処理するためのスクリプトも用意されています。プログレスバーに関する詳細はこちらのチュートリアルをご確認ください。

各統計のインタラクションを処理する主なスクリプトはuiStatsです:

var UiStats = pc.createScript('uiStats');

UiStats.prototype.initialize = function() {
    // ウィジェットを検索
    this.btnPlus = this.entity.findByName('btn-plus');
    this.btnMinus = this.entity.findByName('btn-minus');
    this.progressBar = this.entity.findByName('progress-bar');
    this.progressText = this.progressBar.findByName('text');

    // 値を0に初期化
    this.setValue(0);

    // プラスボタンで値を増やす
    this.btnPlus.element.on('click', function (evt) {
        this.setValue(this.value + 1);
    }, this);

    // マイナスボタンで値を減らす
    this.btnMinus.element.on('click', function (evt) {
        this.setValue(this.value - 1);
    }, this);
};

// 統計値を設定
UiStats.prototype.setValue = function (value) {
    // minとmaxの間をクランプ
    this.value = pc.math.clamp(value, 0, 10);
    // 進行を設定
    this.progressBar.script.progressBar.setProgress(this.value / 10);
    // 進行テキストを更新
    this.progressText.element.text = this.value + ' / ' + 10;
};

このスクリプトでは子要素を見つけ、プラスまたはマイナスのボタンをクリックすることで統計を増減し、プログレスバーとそのテキストを更新します。

This site is translated by the community. If you want to get involved visit this page