Xml 如何动态加载内容?
下面的问题 我有一个XML文件:Xml 如何动态加载内容?,xml,dynamic,xna,Xml,Dynamic,Xna,下面的问题 我有一个XML文件: <Question> <questionTxt>In welchem US-Bundesstaat befindet sich der "Yellowstone National Park?"</questionTxt> <a>"Wyoming"</a> <b>"Illinois"</b> <c>"Iowa"</c> &
<Question>
<questionTxt>In welchem US-Bundesstaat befindet sich der "Yellowstone National Park?"</questionTxt>
<a>"Wyoming"</a>
<b>"Illinois"</b>
<c>"Iowa"</c>
<d>"Mississippi"</d>
<texturePath>"YellowStone"</texturePath>
</Question>
在welchem US Bundesstaat befindet sich的“黄石国家公园?”
“怀俄明州”
“伊利诺伊州”
“爱荷华州”
“密西西比”
“黄石公园”
在另一个类中,我读取这样一个节点的所有值。问题是我所有的LoadContent方法都是这样的:
internal static void LoadContent(ContentManager Content)
{
currentTex = Content.Load<Texture2D>("gfxData/" + texturePath);
}
内部静态无效加载内容(ContentManager内容)
{
currentTex=Content.Load(“gfxData/”+texturePath);
}
因此,它们是内部的、静态的,对于一个类只能调用一次。但是如果我读取另一个节点,那么“texturePath”会发生变化。如何重新加载图像纹理?我相信答案是怀俄明州
说真的,我认为你混淆了静态方法和静态变量。静态方法可以多次调用。静态方法是类级别的,不需要您创建类的实例。由于存在此问题,您的框架可能存在一些主要缺陷。无论如何,从这样一个有限的描述中,我唯一能建议的就是使用字典作为静态变量,使用键作为内容名。如果密钥不存在,请加载内容。如果是,则返回值 对于XNA 4.0,您需要做的是:
- 将Windows游戏项目添加到现有项目中。这将包含一个将XML作为列表读取的类
- 确保您有以下参考资料 使用制度; 使用System.Collections.Generic; 使用System.Linq; 使用Microsoft.Xna.Framework; 使用Microsoft.Xna.Framework.Content
- 创建一个描述项目的名称空间(EnemyData),并在其中创建一个保存数据的公共类(EnemyData)
- 添加要从XML中读取的项作为公共变量。重要的是他们必须公开,否则就行不通了。您将得到一个错误,如“第4行的元素,字符7无效。”
- 右键单击内容文件夹,添加一个XML文件,或复制到XML文件上
- 确保XML文件使用
作为根节点 - 确保XML文件使用
,例如 - 为您创建的每个项目使用一个节点,即使只有一个。在我的情况下,我需要为每个敌人设置一个
- 将XML文件的内容导入器设置为XML Content-XNA Framework,并将内容处理器设置为无需处理
- 在主程序(或游戏)中,确保右键单击主项目并添加对所创建类的引用
- 您还必须为内容项目执行此操作。非常重要。主项目和内容项目都必须具有对类的引用
- 在主/游戏Game1中,为类添加Using语句 //我的敌人数据XML类名称空间 使用灌肠数据
- 为类创建变量,例如: //敌方数据 敌人[]myEnemyData
- 在LoadContent过程中加载内容: //加载敌方数据表 myEnemyData=Content.Load(“敌人”)
- 使用XML文件中的数据 enemyTexture=Content.Load(myEnemyData[3].enemyTexture) 损伤=髓鞘[3]。损伤
http://www.DCJoys.com/Class1.cs
http://www.DCJoys.com/EnemyData.csproj
http://www.DCJoys.com/Enemies.xml