我已经在VS 2013中使用了monogame,但我无法让内容管道工作.当我尝试导入现有的内容管道项目时,我收到以下错误.

由于2013年没有安装模板,因此我无法创建新项目.
由于我正在运行Windows 8,我无法安装XNA(安装程序停止说它需要Win 7或Vista).在这里阅读:https://github.com/mono/MonoGame/wiki/MonoGame-Content-Processing 似乎需要XNA ..?
编辑
Fex答案获取VS 2013中安装的模板,我可以创建一个新的MonoGame Windows项目.但是我仍然无法创建或打开内容项目,因为它们会因此错误而崩溃

我正在尝试Texture2D使用默认导入程序(XML内容)加载包含xml文件的自定义类,而不使用处理器.
大量的在线研究和大量处理其他错误的研究引导我使用这种XML:
<?xml version="1.0" encoding="utf-16"?>
<XnaContent xmlns:Components="Entities.Components">
<Asset Type="EntitiesContentPipeline.EntityTemplateContent">
<Name>entity name</Name>
<TestTexture>
<Reference>#External1</Reference>
</TestTexture>
</Asset>
<ExternalReferences>
<ExternalReference ID="#External1" TargetType="Microsoft.Xna.Framework.Graphics.Texture2D">C:\Documents and Settings\GDuckett\My Documents\Visual Studio 2010\Projects\Gravitron\Gravitron\Gravitron\bin\x86\Debug\Content\Bullet.xnb</ExternalReference>
</ExternalReferences>
</XnaContent>
Run Code Online (Sandbox Code Playgroud)
是的,我也不喜欢硬编码的路径,但是如果我能够在没有自定义阅读器的情况下工作,或者每个包含Texture2Di的类型的编写者都可以使用它.
下面是我的类的内容版本(由管道使用):
[ContentSerializerRuntimeType("Entities.Content.EntityTemplate, Entities")]
public class EntityTemplateContent
{
public string Name;
public ExternalReference<Texture2D> TestTexture;
public EntityTemplateContent()
{
}
}
Run Code Online (Sandbox Code Playgroud)
以下是我的运行时版本:
public class EntityTemplate
{
public string Name;
public Texture2D TestTexture;
public EntityTemplate()
{
}
}
Run Code Online (Sandbox Code Playgroud)
如果我尝试var test = Content.Load<EntityTemplate>("BulletTemplate");下面做的是我得到的错误:
加载"Bullet"时出错.ContentTypeReader Microsoft.Xna.Framework.Content.Texture2DReader,Microsoft.Xna.Framework.Graphics,Version = 4.0.0.0,Culture = neutral,PublicKeyToken …
XNA是蜜蜂的膝盖,但我仍然无法完全围绕自定义内容管道.
一些基本示例(如MSDN的法线贴图示例)向您展示了如何将来自.fbx文件的不透明数据的法线贴图键分配给要加载的相应法线贴图.我甚至不知道他们如何知道密钥的名称,实际上是什么不透明数据,是否在.fbx文件中定义.
有趣的是,内容管道中没有代码说明如何设置漫反射纹理 - 似乎暗示您使用名为"Texture"的着色参数并自动设置它们.但是,如果我将参数重命名为其他内容,则模型会加载没有纹理.
它如何隐含地知道加载漫反射贴图,以及如何加载漫反射贴图以使用不同名称的着色器参数读取并加载默认的中性白色纹理文件(如果不存在)?
就此而言,是否有一个"hello world"示例用于学习使用内容管道自定义加载模型?
请注意,我不打算通过在属性窗口中设置纹理来覆盖.fbx模型中的现有纹理引用.
我可以将内容项目引用到非XNA项目(MonoGame,如果它很重要)吗?
最近我在使用 MonoGame Content Pipeline 工具时遇到了一些麻烦,无法加载纹理。错误消息表示找不到“freeimage.dll”。我在 MonoGame 论坛上查找了解决方案,最后下载了 64 位版本的 Visual C++ Redistributable Package 2012。这解决了我的问题,内容管道可以再次加载 .png 文件。现在管道工具在加载 .spritefont 文件时遇到问题。它说缺少“freetype.dll”。所有这些丢失的 .dll 文件是怎么回事?我刚刚下载了 VC++ Redistributable Package,但它只修复了纹理,而不修复字体。
我尝试下载 Visual C++ Redistributable Package 2017。但是,问题仍然存在......
我目前正在尝试使用Xna Content Pipeline扩展.在该实验中,我正在尝试加载包含另一个需要加载的"内容项"的文件.例如:
public class CustomItem
{
public string Name;
public Texture2D Texture;
}
Run Code Online (Sandbox Code Playgroud)
现在,在我的内容处理器中,我可以创建一个新的'CustomItem'实例并初始化Name字段,因为它只是一个字符串.但是,我无法在内容编译期间加载纹理文件(注意:纹理只是一个示例,理想情况下我希望能够加载任何其他内容类型).
我正在寻找的是:
// ... start class ...
public override CustomItem Process(SomeInputFormat input, ContentProcessorContext context)
{
return new CustomItem()
{
Name = input.ItemName,
Texture = context.LoadAsset<Texture2D>(input.ItemTexturePath) // I realise LoadAsset<T>() does not exist - it's an example of what would be ideal
};
}
// ... end class ...
Run Code Online (Sandbox Code Playgroud)
有谁知道这是否真的有可能,如果有的话,怎么去呢?如果可能的话,我宁愿不去延迟加载其他内容项的路线,或者使用二进制读取器和编写器创建我自己的自定义内容加载.
我已经阅读了Shawn Harvgreave关于自动序列化的博客文章和关于内容管道概述的MSDN文章,但我找不到支持的类型列表.
引用MSDN:
从XNA Game Studio 3.1开始,对于没有现有内容类型编写器的简单类型,自动完成自定义数据到.XNB格式的序列化.
直到我试图用我还没有这个问题,Queue从System.Collections.Generic我猜是不是由自动序列化的支持.
那么,是否有一个支持的类型列表?而如果不支持的话,会我需要写我自己的ContentTypeWriter和ContentTypeReader?