InvalidCastException:无法使用Unity(C#)从源类型转换为目标类型

时间:2017-12-19 20:40:23

标签: c# unity3d type-conversion

我正在尝试将对象转换为int。我已经尝试过Convert.ToInt32(对象),但它不起作用。我不明白 我错过了什么。我很高兴,有人可以提供帮助。 下面是代码:

void Update()
{
        int markNr = 0;
    if (this.m_TuioManager.IsConnected
        && this.m_TuioManager.IsMarkerAlive(this.MarkerID) && isTrue)
    {
        //UserDetected();
        TUIO.TuioObject marker = this.m_TuioManager.GetMarker(this.MarkerID);

        //int object1 = Int32.TryParse(marker, out markNr);
        Debug.Log("The object:" + marker.ToString());

        int object1 = Convert.ToInt32(marker);

        try
        {
            if (markNr == object1)
            {
                Debug.Log("It Worksssss!!!");
                presentationCube.newGame();

            }
        }
        catch (Exception)
        {
            Debug.Log("Failed restarting the game");
        }

1 个答案:

答案 0 :(得分:2)

只有表示整数的对象才能转换为整数。 TuioObject不是整数的表示,但它可以包含一个或多个可以转换为整数的整数或值。

我建议你做的是向TuioObject添加一个函数,它返回你需要的整数。例如,如果要比较的数字是id:

public int GetId ()
{
    return id;
}

然后替换

int object1 = Convert.ToInt32(marker);

int id = marker.GetId();

如果TuioObject位于您无法编辑的外部框架中,则可以使用新函数创建TuioObject的子类。