2017-12-10 5 views
1

こんにちは、私はプレハブに4つのボタンがあります。+ボタンをクリックすると、+ボタンをクリックすると他のボタンの2つのテキストを編集するように設定されています。 10を売って10を買い、+をもう一度クリックすると、買い20と売り20が表示されます。ユニティボタンクリック時

これらのボタンは、メインプレハブにac#スクリプトを追加し、+と - のon_click関数を使用して、ボタン。私が抱えている問題は、他の2つのボタンのテキストを変更する最善の方法です。このプレハブはショップページに100〜200倍のアイテムを作るために動的に作成されるので、プレハブに添付されたスクリプトに2つのゲームオブジェクトを作成し、両方のボタンをドラッグすることを考えていましたが、ボタンのテキストコンポーネントを追加します。

ご協力いただきありがとうございます。 - クリックするとそれが売買ボタンの両方を更新し、私が探しています何

enter image description here enter image description here

はベストプラクティスである+またはをするときように:私は明確にするために、いくつかの画像が含まれている

10から100に、またはその逆になります。これはプレハブで、最高のパフォーマンスを発揮する方法を探しているので、200〜300回複製されます。

+0

私は完全にあなたに従っているかどうかはわかりません。いくつかのイベントでボタンのテキストを変更するなど、UIの状態変化を処理するための良い方法についてのご質問ですか? – Maakep

+0

明確にするために、いくつかの画像と声明をアップロードしました。 – Adam

答えて

0

ここでは、通常、UIを変数にきちんとマッピングしています。ご質問がある場合はお知らせください。さらにソリューションに合わせて調整したい場合は、コードのいくつかを表示し、今日の仕組みを表示する必要があります。これは私が通常使用する一般的な概念です:

public class YourClass : MonoBehaviour 
{ 
    private Text sellButtonText; 

    private int _sellAmount; 
    public int SellAmount 
    { 
     get 
     { 
     return _sellAmount; 
     } 
     set 
     { 
     _sellAmount = value; 
     _sellButtonText = "Sell " + _sellAmount; 
     } 
    } 


    void Start() 
    { 
     _sellButtonText = GameObject.Find("The Object with Sell button").GetComponent<Text>(); 
    } 
} 

あなたは変数は、カスタムゲッターとセッターを使用してUIに表示される内容を変更することを変更するパブリック、誰にも変数SellAmountを公開します。

あなたがこのアーキテクチャーに慣れていない場合、なぜプライベート_sellAmountが必要なのかは、無限ループを避けるためです。 getメソッドとsetメソッドは別の変数にデータを格納する必要があります。これは、getメソッドが同じ変数を返した場合、同じgetメソッドをもう一度やり直すからです。 setと同じですが、同じ変数を設定します。同じ変数は、同じset-methodに渡され、同じ変数が設定されます。同じ変数が設定されます。これを解決するには、それを別のプライベートメンバーに保管します。

0

解決策が見つかりました。私はunityengine.uiを使用して追加することを忘れてしまったので、公開テキストを作成して、ボタンのテキストをドラッグすることができます。

関連する問題