unity报错【3】FormatException: Input string was not in a correct format.

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

// create a GameObject
// create two Input Fields
// attach both Fields to the GameObject
// attach this script to the GameObject

public class Vector3__x : MonoBehaviour
{
    
    
    public InputField m_InputFieldX, m_InputFieldY;
    string xString, yString;
    float m_XValue, m_YValue;
    Vector3 m_NewPosition; 

    void Start()
    {
    
    
        // Vector3 m_NewPosition = new Vector3(0.0f, 0.0f, 0.0f);报错m_NewPosition doesn't exist,原因是局部变量有作用域
        m_NewPosition = new Vector3(0.0f, 0.0f, 0.0f);
    }

    void Update()
    {
    
    
        xString = m_InputFieldX.text;
        yString = m_InputFieldY.text;
        
        m_XValue = float.Parse(xString);
        m_YValue = float.Parse(yString);  
        // 报错FormatException: Input string was not in a correct format.


        /*float.TryParse(xString, out m_XValue);
        float.TryParse(yString, out m_YValue);
        m_XValue = float.Parse(xString);
        m_YValue = float.Parse(yString);
        // 报错FormatException: Input string was not in a correct format.*/


        /*if (float.TryParse(xString, out m_XValue) && float.TryParse(yString, out m_YValue))
        {
            m_XValue = float.Parse(xString);
            m_YValue = float.Parse(yString);
        }   // 没报错*/


        /*try
        {
            m_XValue = float.Parse(xString);
            m_YValue = float.Parse(yString);
        }
        catch { }  // 没报错*/


        m_NewPosition.x = m_XValue;
        m_NewPosition.y = m_YValue;
        this.transform.position = m_NewPosition;
    }
}

报错FormatException: Input string was not in a correct format.****

解决办法
把代码:

        m_XValue = float.Parse(xString);
        m_YValue = float.Parse(yString); 

改成:

        try
        {
    
    
            // Convert the strings to floats
            m_XValue = float.Parse(xString);
            m_YValue = float.Parse(yString);
        }
        catch {
    
     }

或者:

        if (float.TryParse(xString, out m_XValue) && float.TryParse(yString, out m_YValue))
        {
    
    
            m_XValue = float.Parse(xString);
            m_YValue = float.Parse(yString);
        }   // 没报错

猜你喜欢

转载自blog.csdn.net/qq_50653422/article/details/129675464
今日推荐