2 votes

Unity DropDown.OnValueChanged ne fonctionne pas

Je suis en train d'essayer d'ajouter un menu déroulant à une scène où l'utilisateur sélectionne une option et met à jour les Playerprefs et lorsque l'application redémarre, l'option sélectionnée dans le menu déroulant devrait être celle précédemment sélectionnée par l'utilisateur.

Le code que j'ai élaboré jusqu'à présent est le suivant.

public Dropdown mViewerTypeDropDown;
    void Start () {
        mDebug = (LRDebug)mScriptHolder.GetComponent ();
        mScriptHolder=GameObject.Find ("ScriptHolder");
        mViewerTypeDropDown.captionText.text = PlayerPrefs.GetString ("Viewer Type","Generic Cardboard (Default)");

    }
//La fonction attachée à l'auditeur onvaluechanged
public void ViewerTypeChanged(int value)
    {

        mViwerTypeChange = value;

        switch (mViwerTypeChange) {
        case 0:
            mViewerType = "Generic Cardboard (Default)";
            break;
        case 1:
            mViewerType="VR ONE (Zeiss)";
            break;
        case 2:
            mViewerType="VR Goggles (Merge)";
            break;
        case 3:
            mViewerType="C1-Glass (Go4D)";
            break;
        case 4:
            mViewerType="Cardboard v1 (Google)";
            break;
        }

        PlayerPrefs.SetString("Viewer Type",mViewerType);
        PlayerPrefs.Save ();
    }

Cela me semble logiquement correct mais je ne suis pas sûr de ce qui me manque ici. Et pour être encore plus clair, j'ai rendu la méthode attachée dynamique dans l'éditeur comme suit description de l'image

J'ai beaucoup cherché mais comme cette option de menu déroulant est nouvelle, il n'y a pas encore beaucoup d'exemples. Donc en tant que débutant sur Unity, je n'arrive pas à comprendre celui-ci. Si quelqu'un pouvait m'aider ce serait d'une grande aide. Merci

1voto

paul p Points 312
utilisation de UnityEngine;
utilisation de System.Collections;
utilisation de System.Collections.Generic;
utilisation de UnityEngine.UI;

public class dropdowns : MonoBehaviour 
{
    public Dropdown mydropdown;

    // Utilise ceci pour l'initialisation
    void Start () 
    {

        mydropdown.onValueChanged.AddListener(delegate
        {
            selectvalue(mydropdown);
        });
    }
    private void selectvalue(Dropdown gdropdown)
    {

    }

    // La mise à jour est appelée une fois par image
    void Update () 
    {

        dropdownchk();
    }

   public void dropdownchk()
    {

        if (mydropdown.value == 0)
        {
            // faire quelque chose
        }
    }

0voto

Pablo Pizarro Points 1

Oui, vous pouvez lier le menu déroulant lui-même à la méthode. J'ai plusieurs menus déroulants utilisant la même logique sans avoir besoin de délégués et de "addListener".

//menu déroulant
    public void OnDropDownChanged(Dropdown dropDown)
    {
        Debug.Log("MENU DÉROULANT CHANGÉ -> " + dropDown.value);
    }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X