C# 输入中的字符串未转换(格式错误)

C# 输入中的字符串未转换(格式错误),c#,string,vector,C#,String,Vector,重要编辑!!!!!!! (我还编辑了代码) 我发现当我做string[]pos=value.Split(',')和其他,它做正确的事情,但这里是交易 在unity中,字符串中的小数由,表示,因此当我执行字符串[]pos=value.Split(',')他按找到的前3个逗号进行拆分,如果您检查我刚刚修改的样本数据,并拆分前3个逗号,您将得到实际结果 我还设法修好了秤 原职: 我正在尝试学习unity,为了有一个好的保存/加载系统,我遵循了unity(注意,我删除了行value=value.Rep

重要编辑!!!!!!! (我还编辑了代码)


我发现当我做
string[]pos=value.Split(',')和其他,它做正确的事情,但这里是交易

在unity中,字符串中的小数由
表示,因此当我执行
字符串[]pos=value.Split(',')他按找到的前3个逗号进行拆分,如果您检查我刚刚修改的样本数据,并拆分前3个逗号,您将得到实际结果

我还设法修好了秤

原职:

我正在尝试学习unity,为了有一个好的保存/加载系统,我遵循了unity(注意,我删除了行
value=value.Replace(“,”);
,因为不需要它):

我认为这里有一个错误,因为如果我在另一个函数中使用上述函数,X轴工作正常,其他两个(Y和Z)则不正常:

public virtual void Load(string[] values)
{        
    // in in the variable values[] i have in these positions:
    // values[0] objectname, values[1] (x,y,z) position, values[2] (x,y,z) scale
    transform.localPosition = SaveGameManager.Instance.StringToVector(values[1]);
    transform.localScale = SaveGameManager.Instance.StringToVector(values[2]);
}

样本数据

string position = "(190,0, 2,5, 180,0)";
string scale = "(5, 5, 5)";
预期结果
-职位:

-比例:

实际结果
-职位:


-比例:我发现了一种99%的解决方案

value = value.Trim('(', ')');
value = value.Replace(" ","");
string[] pos = value.Split(',');
return new Vector3(float.Parse(pos[0]), float.Parse(pos[1]), float.Parse(pos[2]));
value=value之后添加这段代码。替换(“,”)

替换
返回新的向量3(float.Parse(pos[0])、float.Parse(pos[1])、float.Parse(pos[2])

使用
返回新向量3(float.Parse(位置[0])、float.Parse(位置[2])、float.Parse(位置[4])

这很有效,因为我只是在应该的地方加了一个逗号,仅此而已

在unity中,字符串中的小数由

只有当您的计算机使用的区域设置是正确的时,这才是正确的。Unity在
Vector3.ToString()
中使用
float.ToString()
,并且
float.ToString()
尊重您电脑的设置

尝试放置
Thread.CurrentThread.CurrentCulture=new CultureInfo(“en-US”,false)强制将区域设置和句点作为十进制分隔符

编辑:如果您想继续使用逗号作为小数分隔符,这应该可以:

string[] numbers = value
    .Replace("(", "")
    .Replace(")", "")
    .Replace(", ", "/")
    .Split('/');

Vector3 v = new Vector3(float.Parse(numbers[0]), float.Parse(numbers[1]), float.Parse(numbers[2]));

我编辑了原始帖子,这里看起来很奇怪你确定你的输入是你认为的吗?它没有改变任何东西。在
Load
方法中设置一个断点,并检查
以确保输入是您所想的。然后逐步检查代码,看看是否有问题。@RufusL不幸的是,我已经尝试过了,加载函数的输入中给出的所有内容都可以正常工作。您发布的代码运行良好。能否显示对
Load
的确切调用(包括字符串数组值)?
pos[0] = pos[0] + ',' + pos[1];
pos[2] = pos[2] + ',' + pos[3];
pos[4] = pos[4] + ',' + pos[5];
string[] numbers = value
    .Replace("(", "")
    .Replace(")", "")
    .Replace(", ", "/")
    .Split('/');

Vector3 v = new Vector3(float.Parse(numbers[0]), float.Parse(numbers[1]), float.Parse(numbers[2]));