Error CS0029 fix

I have an error wich says “Cannot Implicitly convert type ‘char’ to ‘string’”

Heres the code:

`public void OnButtonPressed (VirtualButtonBehaviour vb)

{

    Debug.Log("Button pressed!");

    GetComponent<TextMesh>().text = x;

    //throw new System.NotImplementedException ();

}`

Heres the full code:

using UnityEngine;

using System.Collections;

 

public class VBEventHandler : MonoBehaviour, IVirtualButtonEventHandler 

{
    char x;
    

    // Use this for initialization

    void Start () 
	{

        // Register yourself as a handler for a button

        Object[] objects = FindSceneObjectsOfType(typeof(GameObject));

        foreach (Object vObject in objects) 
			{

            GameObject gameObject = (GameObject) vObject;

            if (gameObject.name.Equals("VirtualButton")) 
				{

                Debug.Log("Found the VirtualButton GameObject!");

                VirtualButtonBehaviour vbuttonBehavior = (VirtualButtonBehaviour) gameObject.GetComponent(typeof(VirtualButtonBehaviour));

                vbuttonBehavior.RegisterEventHandler(this);

                Debug.Log("I'm registered!");

            	}

            Debug.Log(gameObject.name);

        	}

    }

    

    // Update is called once per frame

    void Update () 
	{
    

    }

    


    

    #region IVirtualButtonEventHandler implementation

    public void OnButtonPressed (VirtualButtonBehaviour vb)

    {

        Debug.Log("Button pressed!");

        GetComponent<TextMesh>().text = x;

        //throw new System.NotImplementedException ();

    }

 

    public void OnButtonReleased (VirtualButtonBehaviour vb)

    {

        

        //throw new System.NotImplementedException ();

    }

    #endregion

}

The error line is:

GetComponent().text = x;

GetComponent().text = x.ToString();

This error message tells you nicelly what is wrong. You are assigning

x

(which is of type char) to

GetComponent().text¸

which is string. Whenever you are assigning one type of object to another (or primitive type) engine will try to change its type if it is allowed. In this example

int i = 0;
float a = i;

i was converted to float and then assigned to a implicitely. Other way around is not deemed safe and would not happen as this would cause more bugs if done unintentionaly. You can still do it yourself if you are sure you want it like this:

i = (int)a;

What you need in your case is:

GetComponent().text = x.ToString();

Every object should have ToString function and it returns some stringified representation of object it is called uppon.