需要帮助XNA的内容管道(2Qs)

时间:2010-12-10 23:05:53

标签: c# xna

我问这里关于XNA而不是官方论坛,因为我国的人不允许登录新的XNA网站。

嗯,这些是我的问题:

  1. 我想使用我在Paint Shop Pro / Photo Shop / Paint中创建的一些2D图像,但由于某种原因,我需要使用网页安全托盘及其目前显示的设置(我使用透明度) 。 可以任意1请向我解释我如何使用透明度&其他设置(创建和保存图像时),以便XNA(4.0)可以正确显示它? 顺便说一下,我可能需要一些1向我解释如何设置“GraphicsDevice”-s设置以使用透明层/通道。

  2. 我确实尝试按照我应该做的事情(微软的观点)&因此,我使用内容管道来加载我的内容 ALL (包括类启动数据文件)。 我使用 .txt 文件存储我的班级启动数据&我用简单好的旧记事本(++:P)编辑它们。 现在,问题在于我所做的就是将 .txt 文件作为一个非常长的字符串加载而不是创建我的GameDataFile类的新实例。 因为我被迫分两步完成:

  3. 第1步:

    string tempStrData = content.load<string>("data/filename").Replace("\r", "");
    

    /* Loads a string from a file (the string is the whole file!) */

    第2步:

    GameDataFile gameDataFile = new GameDataFile(tempStrData.Split('\n'));
    /* Sends the string to my GameDataFile class constructor which knows how to handle that string and break it to it's data elements (ints, strings vectors, etc...) */
    

    我想将其升级为以下格式:

    GameDataFile gameDataFile = content.load<GameDataFile>("data/fileName");
    

    我认为我应该使用自定义内容管道处理器,任何意见,如果我是对的&amp;我该怎么做?

    请不要让我使用公共成员,因为我总是将其设置为私有,我讨厌并严格禁止使用C#-ONLY-get-&amp; -set方法。

    先谢谢你,Tal A。

1 个答案:

答案 0 :(得分:1)

关于第一个问题,在开始SpriteBatch时将blendstate设置为AlphaBlend:

spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend, null, null, null);

我将我的图像保存为PhotoShop中的PNG,允许透明。

编辑:除非您指的是3D纹理。如果是这样,我将不得不修改我的答案

编辑:对于问题2,App Hub上的this example显示了如何执行此操作。