- Home /
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;
Answer by Lovrenc · Jul 28, 2013 at 09:02 AM
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.
Your answer
Follow this Question
Related Questions
BCE0022: Cannot convert 'String' to 'int'. 0 Answers
Login String to Bool Errors 1 Answer
error when trying to display number in text area 1 Answer
int to char conversion in JS ? 2 Answers