gpt4 book ai didi

c# - Xna 内容管道扩展 - 在自定义处理器中加载其他内容

转载 作者:太空狗 更新时间:2023-10-30 01:09:27 24 4
gpt4 key购买 nike

我目前正在试验 Xna 内容管道扩展。在那个实验中,我试图加载一个文件,其中包含另一个需要加载的“内容项”。例如:

public class CustomItem
{
public string Name;
public Texture2D Texture;
}

现在,在我的内容处理器中,我可以创建“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 ...

有谁知道这是否真的可行,如果可行,该怎么做?如果可能的话,我宁愿不走延迟加载其他内容项的路线,或者使用二进制读取器和写入器创建我自己的自定义内容加载。

最佳答案

您不能在内容管道中使用 Texture2D。您必须使用 Texture2DContent,它是前者的代理类型。反过来,您的类型中必须有一种机制,允许成员在内容构建时为 Texture2DContent,但在运行时为 Texture2DThis article为您提供三种方法。

您可以使用 ContentProcessorContext.BuildAndLoadAsset 获取您的 Texture2DContent 对象。此纹理数据将嵌入到该 Assets 的 .xnb 文件中。

如果您实际上不需要在管道中使用纹理数据,特别是如果您打算在多个 Assets 之间共享相同的纹理,则可以使用 ContentProcessorContext.BuildAsset 来获取ExternalReference 到纹理,内置在它自己的 .xnb 文件中,在 Assets 的 .xnb 文件(和 ContentManager 将为您处理加载)。

关于c# - Xna 内容管道扩展 - 在自定义处理器中加载其他内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6783131/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com