我有以下结构:
<Root name="jack">
<Ele1>4</Ele1>
<Ele2>4</Ele2>
<Ele3>4</Ele3>
<Ele4>4</Ele4>
</Root>
我想修改一些值,所以我使用以下代码:
XElement root1 = new XElement("Root");
root1.SetAttributeValue("name", "jack");
root1.SetElementValue("Ele1", 1);
root1.SetElementValue("Ele2", 2);
root1.SetElementValue("Ele3", 3);
这是一个新结构:
<Root name="jack">
<Ele3>3</Ele3>
</Root>
如果在设置Ele2的值后打印root1 Debug.Log(root1)
,结果为:
<Root name="jack">
<Ele2>2</Ele2>
</Root>
分别是在设定Ele1的值后我是否这样做。
我正在使用C#&amp; Unity3D的MonoDevelop。
答案 0 :(得分:0)
这似乎是Unity3D的问题,因为它是一个非常简单的代码。就像我说的那样,结构就在那里,所以我可以先读取而不是直接修改它。从xml文件中读取root1
之后我做了什么:
string name;
foreach ( XElement ele in root1.Elements() ){
name = ele.Name.LocalName;
if ( !doNotChange.Contains (name) )
ele.SetValue ( PlayerPrefs.GetInt( name ) );
}
其中doNotChange
是包含那些我不需要修改的元素的字符串列表。我真的不知道为什么SetElementValue
在Unity3D中不起作用,SetValue
却起作用。我已经向Unity3D报告过了。我将用他们的答案编辑帖子。
编辑:Unity QA团队回答了我
嗨,
我们已经能够重现这个错误并将其发送给我们的开发人员解决。
我们非常感谢您的贡献。如果您还有其他问题,请随时与我们联系。