MonoGame内容管道的当前状态是什么?

时间:2014-12-25 19:16:57

标签: monogame

我想在我的Mac上使用任何类型的内容管道来处理MonoGame中的纹理和字体(以及理想的声音),但MonoGame中有关内容的所有信息似乎都已过时。这个网站https://github.com/mono/MonoGame/wiki/Xamarin-Studio-Content-Pipeline-Addin似乎是一个可行的基本内容管道,但下载插件的链接不起作用。

目前有没有办法在Mac上轻松处理MonoGame中的纹理和字体?

1 个答案:

答案 0 :(得分:0)

我认为monogame现在有一个内容管道,但我不确定它是否适用于mac。快速浏览似乎表明它只适用于Visual Studio。

但我知道,Monogame可以直接加载某些类型的文件。在每个平台上,可以添加纹理和音频的至少一种文件类型,而无需通过内容管道。我不得不承认我不知道是否存在实际内容管道的重要原因,尽管我的主要游戏开发平台是单一的,但是我不使用它而是直接加载纹理和音频。

字体文件必须经过内容管道。我有一个字体.xnb文件我多年来一直在项目之间折腾,在XNA上编译。

现在,我只为Windows开发过,但在Windows上,我知道的两种文件类型可以直接加载而不需要通过管道,PNG用于纹理,而.WAV用于音频。我不确定哪些将用于mac,因为方便的小表说支持的东西丢失了,大概是当他们实际实现了一个管道时。

最后,如果事实证明PNG文件在mac上不起作用(它将是其他文件类型之一),这里是我写的一个类,用于在我工作时将System.Drawing Bitmaps转换为texture2Ds动态纹理。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;

using System.Drawing; 

namespace DevSoc_Game.Wrappers
{
    public static class BitmapToTexture2d
    {
        static GraphicsDevice graphicsDevice; 

        public static void Init (GraphicsDevice device)
        {
            graphicsDevice = device; 
        }

        /// <summary>
        /// Converts a bitmap to a texture2D. 
        /// </summary>
        /// <param name="bitmap"></param>
        /// <returns></returns>
        public static Texture2D BitmapToTexture2D (Bitmap bitmap)
        {
            //each pixel has four colour bytes, so multiply the array. 
            int bufferSize = bitmap.Width * bitmap.Height * 4;

            System.IO.MemoryStream memStream = new System.IO.MemoryStream(bufferSize);
            bitmap.Save(memStream, System.Drawing.Imaging.ImageFormat.Png);

            Texture2D texture = Texture2D.FromStream(graphicsDevice, memStream); 


            /*  Texture2D texture = new Texture2D(graphicsDevice, bitmap.Width, bitmap.Height);

            for (int xdx = 0; xdx < bitmap.Width; xdx++)
            {
                for (int ydx = 0; ydx < bitmap.Height; ydx++)
                {
                    System.Drawing.Color colour = bitmap.GetPixel(xdx, ydx);

                }
            }
            */
            memStream.Close(); 

            return texture; 
        }
    }
}

啊,就在我写完这篇文章的时候,我发现(可能是我最初发现的网站)一个具有monogame文件类型的网站可以本地加载。 Here, partway down

从它的外观来看,你在声音上运气不好,在Mac上也是如此。