1
using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;

namespace Data
{
    public class CompactLevelMap
    {
        public string name;
        public string species;
        public float weight;
        public int age;
    }
}

这是 CompactLevelMap 类(它是一个临时的),在它自己的游戏库项目中。它已正确导入我的主游戏。

这是 XML 文件:

<?xml version="1.0" encoding="utf-8" ?>
<XnaContent>
  <Asset Type="Data.CompactLevelMap"> //The error occurs here
    <name>sdf</name>
    <species>sdf</species>
    <weight>32</weight>
    <age>12</age>
  </Asset>
</XnaContent>

我将其加载到游戏中的方式是

CompactLevelMap compactLevel = new CompactLevelMap();

compactLevel = Content.Load<CompactLevelMap>("Level1");

我已经研究过这个问题,但我只是越来越困惑。顺便说一句,如果有人能告诉我如何导出 XML 文件,我也将不胜感激。

先感谢您。

4

1 回答 1

1

CompactLevelMap您还需要添加对包含内容项目的程序集的引用,以便XmlImporter可以找到类型。右键单击内容项目并选择“添加引用”,然后选择“项目”选项卡。(你把它放在一个单独的程序集中的原因是你不会通过引用你的主游戏来创建循环依赖。)


要以这种格式导出 XML,您需要使用IntermediateSerializer.Serialize. 缺点是它IntermediateSerializer不是 XNA Framework 的一部分,而是 XNA Game Studio 的一部分——不可再分发。因此,您不能真正将其包含在游戏中——但如果您让您的用户也下载 VC# Express 和 XNA GS,则可能在编辑器中包含它。

它还需要针对完整的 .NET 4.0 框架(而不是客户端配置文件)。

此答案中有关此主题的更多详细信息。

于 2013-02-24T11:49:16.740 回答