2017-02-19 1 views
0

ユニティモバイルアプリケーションの場合、パフォーマンスのためには良いでしょうか、TextFieldsやButtonsのようなキャンバスオブジェクトによるナビゲーションを無効にするのでしょうか?ユニティ - モバイルでのパフォーマンスのためのナビゲーション

シーンビューのボタンまたはテキストフィールドを使用すると、インスペクタには「ナビゲーション」オプションが表示されます。このオプションは、さまざまな設定が可能で、視覚化することもできます。この機能は、通常、ウェブサイトでの入力フィールドのように入力フィールドをタブで移動するために使用されます。私のモバイルゲームでは、私はこれを "タブする"必要はありません。私がどこでも非アクティブ化すれば、何らかのパフォーマンスが向上するのでしょうか?

+0

は、破壊とインスタンス化はメモリを解放するための良いですが、あなたはそれを頻繁に使用していない場合に限ります。 特定のボタンがほとんどレンダリングされないと思われる場合は、そのボタンを破棄することを選択できます。 – Kokolo

+0

Tavados - それはまったく無関係です。気にしないで。ボタンが使用されていない場合は、ボタンを非表示にします。それ以上のことはありません。 – Fattie

+0

これは、ボタンを隠したり表示したりすることではありません。私の投稿は大きく編集されていて基本的にトピックが変更されているので、編集してもう少し説明します。 – Tavados

答えて

0

私はUI要素のナビゲーションを無効にすると、パフォーマンス上の影響がないことを、確認することができます。背後には、ハンドヘルドがあります。ハンドラがあります。これは、PC上で「タブ」を押すか、モバイルでも同様です。

0

これを無効にするのはむしろ時間の無駄でしょうか、あいまいな理由で のパフォーマンスをさらに悪化させますか?

通常、UIの表示と非表示を切り替える3つの方法があります。私は最悪から最善までそれらをリストアップします。

.Instantiate(Show)、Destroy(Hide)。

public GameObject uiPanelPrefab; 

void Start() 
{ 
    //Show 
    Instantiate(uiPanelPrefab); 
    //Hide 
    Destroy(uiPanelPrefab); 
} 

これは、毎回オブジェクトを作成して破棄します。 (推奨されません)。

。そのUIのゲームオブジェクトをアクティブ(非表示)または非表示(非表示)にします。

public GameObject uiPanelPrefab; 

void Start() 
{ 
    //Show 
    uiPanelPrefab.SetActive(true); 
    //Hide 
    uiPanelPrefab.SetActive(false); 
} 

これはゴミにそれがアクティブに設定しても迅速なフリーズの原因とされるたびに作成されます。あなたは、VRアプリケーションを作るときにこれがたくさん気づくでしょう。デスクトップでうまくいく。携帯端末でうまくいかない、またはおすすめしていません。

。そのUIのComponentを有効(表示)または無効(非表示)にします。

public GameObject uiPanelPrefab; 

void Start() 
{ 
    //Show 
    uiPanelPrefab.GetComponent<Image>().enabled = true; 
    //Hide 
    uiPanelPrefab.GetComponent<Image>().enabled = false; 
} 

これは、単にコンポーネントを有効または無効にします。このメソッドでは、各コントロールに異なるコンポーネントが関連付けられているため、Button,Text,InputFieldなどの各UIコントロールのカスタム関数が必要です。これは特にモバイルデバイスで推奨される方法です。


は、これらとの長い実験の後、私は #3が最善であるとused.The欠点は、各UIコントロールのすべてのコンポーネントを無効にする関数を作るために持っていることであるべきであるという結論に達しました。

たとえば、Buttonコントロールには1つ以上のコンポーネントがあります。 Buttonコンポーネントを無効にするだけでは、それは実行されません。 Button,ImageおよびTextのコンポーネントを無効にする単純な関数を記述する必要があります。以下のような何か:

void showButton(GameObject button, bool show, bool includeInactive = false) 
{ 
    Button bt = button.GetComponentInChildren<Button>(includeInactive); 
    bt.enabled = show; 

    Text txt = button.GetComponentInChildren<Text>(includeInactive); 
    txt.enabled = show; 

    Image img = button.GetComponentInChildren<Image>(includeInactive); 
    img.enabled = show; 
} 

使用上

//Show 
showButton(uiPanelPrefab, true); 

//Hide 
showButton(uiPanelPrefab, false); 
+0

私の答えをチェックしましたか? – Programmer

+0

これは完全にオフトピックです。あなたは自分の投稿のタイトルと内容を編集し、最初の質問と全く一致しない回答を書きました。 – Tavados

+0

私は元の質問に戻しました。あなたの質問は、テキストフィールドやボタンのようなUIコンポーネントを無効にする方が良いかどうかです...これはあなたの質問です。私はそれを行う方法を提供し、その後、コンポーネントを無効にするのではなく有効にする/無効にする方が良いことを伝えました。 – Programmer

関連する問題