2016-05-09 14 views
2

Я пытаюсь добавить выпадающий список в сцену, где пользователь выбирает параметр, и он обновляет параметры playerprefs, и когда приложение перезагружается, выбранный параметр в раскрывающемся списке должен быть выбран ранее пользователем ,Unity DropDown.OnValuechanged не работает

Код, который я привел до сих пор, заключается в следующем.

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

    } 
//The Function attached to onvaluechanged listner 
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(); 
    } 

Это кажется логически правильным для меня, но я не уверен, что здесь отсутствует. И в дальнейшем ясно, что я сделал Добавленную методу динамического один в редакторе следующим образом enter image description here

Я искал много, но, как этот вариант выпадающего новый один Там не много примеров из еще. Так что, как новичок в единстве, я не могу работать. Если кто-нибудь сможет мне помочь, это будет большой помощью. спасибо

ответ

1
using UnityEngine; 
using System.Collections; 
using System.Collections.Generic; 
using UnityEngine.UI; 

public class dropdowns : MonoBehaviour 
{ 
    public Dropdown mydropdown; 

    // Use this for initialization 
    void Start() 
    { 


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

    } 



    // Update is called once per frame 
    void Update() 
    { 

     dropdownchk(); 
    } 

    public void dropdownchk() 
    { 

     if (mydropdown.value == 0) 
     { 
      // do something 
     } 
    } 
+0

Могу ли я спросить, почему метод обновления? это обязательно? –

+0

В моем скрипте я изменяю значение во время выполнения, поэтому для него требуется метод обновления. –

Смежные вопросы