2016-11-04 41 views
-1

我一直在尝试创建一个输入字段,它在编辑时激活滚动查看下面并显示相关信息的主题(例如:用户名,地址.. ),但是在调用输入字段事件来激活滚动视图时,它不会接受我创建的函数。感谢您阅读我可怕的英语,并帮助您。需要帮助创建一个输入字段和滚动视图[Unity3d-C#]

public InputField username; 
    public InputField password; 
    public List<string> usernamelist; 
    public Button enter; 
    public ScrollRect usernamedataload; 

    // Use this for initialization 
    void Start() { 
     string temp = ""; 
     if (PlayerPrefs.GetString ("username") == null) { 
      username.text = temp; 
     } else if (PlayerPrefs.GetString ("password") == null) { 
      password.text = temp; 
     } else { 
      username.text = PlayerPrefs.GetString ("username"); 
      password.text = PlayerPrefs.GetString ("password"); 
     } 
     usernamedataload.gameObject.SetActive (false); 

    } 

    // Update is called once per frame 
    void Update() { 
     enter.onClick.AddListener (enterKeyDown); 
     username.onValueChanged.AddListener(selectUsernameInput); 
     username.onEndEdit.AddListener (endEditingUsernameInput); 
    } 
    void selectUsernameInput(){ 
     usernamedataload.gameObject.SetActive (true); 
     usernamedataload.content.GetChild (usernamelist); 
    } 
    void endEditingUsernameInput(){ 
     usernamedataload.gameObject.SetActive (false); 
    } 
+0

究竟是什么没有被激活,无效的selectUsernameInput或void的内部的setactive? – Mennolp

+0

以及代码的想法是当用户在输入字段中键入他们的用户名时,现在禁用的滚动视图将激活。但是我调用selectUsernameInput或endEditingUsernameInput它设置了“方法或委托'IdAndPasswordController.endEditingUsernameInput() '参数不符合委托'UnityEngine.Events.UnityAction (字符串)'参数“。 – Kienhuyvn

回答

1

这是很难理解这个问题,但我可以发现大问题已经。您应该注册一次UI事件。现在,你正在注册三个事件更新()函数。将这些代码移动到开始()函数。

调用输入字段事件激活滚动视图不会 接受我所创建的身边你传递它的功能

裹委托功能。例如,username.onValueChanged.AddListener(delegate { selectUsernameInput(); });

Transform.GetChild需要int作为参数,但你逝去的List将其与usernamedataload.content.GetChild(usernamelist);。我不知道你为什么要这样做,但你应该像(1,2,3,4)那样通过一个int

您可以从下面的代码开始。它修复了上面提到的所有问题并将编译。

public InputField username; 
public InputField password; 
public List<string> usernamelist; 
public Button enter; 
public ScrollRect usernamedataload; 

// Use this for initialization 
void Start() 
{ 
    string temp = ""; 
    if (PlayerPrefs.GetString("username") == null) 
    { 
     username.text = temp; 
    } 
    else if (PlayerPrefs.GetString("password") == null) 
    { 
     password.text = temp; 
    } 
    else 
    { 
     username.text = PlayerPrefs.GetString("username"); 
     password.text = PlayerPrefs.GetString("password"); 
    } 
    usernamedataload.gameObject.SetActive(false); 

    enter.onClick.AddListener(enterKeyDown); 
    username.onValueChanged.AddListener(delegate { selectUsernameInput(); }); 
    username.onEndEdit.AddListener(delegate { endEditingUsernameInput(); }); 
} 

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

} 

void selectUsernameInput() 
{ 
    usernamedataload.gameObject.SetActive(true); 
    usernamedataload.content.GetChild(0); 
} 

void endEditingUsernameInput() 
{ 
    usernamedataload.gameObject.SetActive(false); 
} 

void enterKeyDown() 
{ 

}