2016-05-09 183 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

在我的腳本中,我正在更改運行時的值,所以它需要更新方法。 –