输入值转换为字符串

时间:2016-08-11 11:33:48

标签: c# unity3d game-engine

最近我一直在制作游戏,我一直在创建一个菜单。 在开始时,播放器打开菜单并在UI文本字段中输入名称,我将转换为字符串,因此可以在整个故事情节中为该播放器调用该名称。

我在这个网站上遇到过另一个脚本:

using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class GUIFieldTest : MonoBehaviour {

    public GameObject playerName;

    public void Start ()
    {
        var input = gameObject.GetComponent<InputField>();
        var se = new InputField.SubmitEvent();
        se.AddListener(SubmitName);
        input.onEndEdit.AddListener(SubmitName);

        //or simply use the line below,
        //input.onEndEdit = se;  // This also works
    }

    private void SubmitName(string arg0)
    {
        Debug.Log(arg0);
    }
}

我已经调整了这段代码,所以我可以将文本字段的预制件包含为GameObject,但是我收到了一条错误说:

  

NullReferenceException:未将对象引用设置为的实例   对象GUIFieldTest.Start()(在Assets / Scripts / GUIFieldTest.cs:13)

我理解这个错误意味着没有分配任何东西,我理解如何修复NullReferenceException。我可以运行游戏,但游戏冻结,文本字段无法点击。你不能输入任何文字。

我知道这是一个非常简单的问题,但解释会很棒。

1 个答案:

答案 0 :(得分:0)

var input = gameObject.GetComponent<InputField>()应该是

var input = playerName.GetComponent<InputField>().

当您使用gameObject.GetComponent时,它只会在脚本附加到的GameObject上找到组件。

我假设您的InputField GameOBject是playerName变量。

如果不是这样,请执行var input = GameObject.Find("YourInputFieldGameOBject").GetComponent<InputField>()