Ach*_*iya 6 unity-game-engine drop-down-menu
我正在尝试向场景添加一个下拉列表,其中用户选择一个选项并更新播放器首选项,并且当应用程序重新启动时,下拉列表中的所选选项应该是用户之前选择的选项。
到目前为止我想出的代码如下。
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 ();
}
Run Code Online (Sandbox Code Playgroud)
这对我来说在逻辑上似乎是正确的,但我不确定我在这里缺少什么。为了进一步明确,我已将附加方法设置为编辑器中的动态方法,如下所示
我已经搜索了很多,但由于这个下拉选项是一个新选项,所以还没有很多例子。因此,作为一名统一新手,我似乎无法解决这个问题。如果有人能帮助我,这将是一个很大的帮助。谢谢
小智 6
是的,您可以将下拉列表本身绑定到该方法。我有许多使用相同逻辑的下拉菜单,不需要委托和“addListener”。
//dropdown
public void OnDropDownChanged(Dropdown dropDown)
{
Debug.Log("DROP DOWN CHANGED -> " + dropDown.value);
}
Run Code Online (Sandbox Code Playgroud)
如果您使用 TextMeshPro,请使用 TMP_Dropdown。
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
}
}
Run Code Online (Sandbox Code Playgroud)