私は Xna にかなり慣れていないので、XML ファイルを読み込んで読みたいと思っています。インターネットで何時間も検索した後でも、ファイルがロードされません。開始しようとするたびに (DirectoryNotFoundException) が発生し、デバッグ ディレクトリにコピーしようとすると (NullReferenceException) が発生します。
ダウンロード: http://www.mediafire.com/?z6w36b73cufy3co
読み込み方法: (コードには 2 つ目のコードがありますが、とにかくプロジェクト全体をアップロードします)
private void InitLevel(int levelNum)
{
actlevel = levelNum;
levelData = (from level in XElement.Load("Data\\Levels.xml").Descendants("Level")
where (int)level.Attribute("Number") == levelNum
select new LevelData
{
number = levelNum,
changeDirChance = (int)level.Attribute("ChangeDirChance"),
maxActiveAliens = (int)level.Attribute("MaxActiveAliens"),
totalAliensToFinish = (int)level.Attribute("TotalAliensToFinish"),
boss = alienTypes[(string)level.Attribute("Boss")],
fireChance = (int)level.Attribute("FireChance"),
maxAlienBullets = (int)level.Attribute("MaxAlienBullets"),
alienGenerationTime = TimeSpan.FromMilliseconds((int)level.Attribute("AlienGenerationTime")),
selectionData = (from sel in level.Descendants("AlienType")
select new AlienSelectionData
{
chance = (int)sel.Attribute("Chance"),
alien = alienTypes[(string)sel.Attribute("Name")]
}).ToList()
}).SingleOrDefault();
Debug.Assert(levelData != null);
}
および XML ファイル (/Data 内の Levels.xml):
<?xml version="1.0" encoding="utf-8" ?>
<Levels>
<Level Number="1" MaxActiveAliens="7" TotalAliensToFinish="15" Boss="boss1"
AlienGenerationTime="800" ChangeDirChance="2" FireChance="2" MaxAlienBullets="5">
<AlienTypes>
<AlienType Name="alien1" Chance="25" />
<AlienType Name="alien2" Chance="20" />
<AlienType Name="alien3" Chance="20" />
<AlienType Name="alien4" Chance="5" />
</AlienTypes>
</Level>
<Level Number="2" MaxActiveAliens="10" TotalAliensToFinish="25" Boss="boss2"
AlienGenerationTime="600" ChangeDirChance="2" FireChance="3" MaxAlienBullets="7">
<AlienTypes>
<AlienType Name="alien1" Chance="20" />
<AlienType Name="alien2" Chance="20" />
<AlienType Name="alien3" Chance="20" />
<AlienType Name="alien4" Chance="15" />
<AlienType Name="alien5" Chance="10" />
</AlienTypes>
</Level>
</Levels>