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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了InvalidCastException:无法使用Unity(C#)从源类型转换为目标类型相关的知识,希望对你有一定的参考价值。

我试图将对象转换为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");
        }
答案

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

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

public int GetId ()
{
    return id;
}

然后更换

int object1 = Convert.ToInt32(marker);

int id = marker.GetId();

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

以上是关于InvalidCastException:无法使用Unity(C#)从源类型转换为目标类型的主要内容,如果未能解决你的问题,请参考以下文章

InvalidCastException:无法将“System.Collections.Generic.List”类型的对象转换为 System.Collections.Generic.IEnumer

InvalidCastException:无法将“System.DBNull”类型的对象转换为“System.Nullable`1[System.Int32]”[重复]

防止在工作目录中加载 dll,InvalidCastException Type A 无法转换为 Type B

System.InvalidCastException: 无法将类型为“LabelManager2.ApplicationClass”的 COM对象强制转换为

在 Unity 中使用泛型... InvalidCastException

C# 转换枚举 InvalidCastException 错误