我想在我的Mac上使用任何类型的内容管道来处理MonoGame中的纹理和字体(以及理想的声音),但MonoGame中有关内容的所有信息似乎都已过时。这个网站https://github.com/mono/MonoGame/wiki/Xamarin-Studio-Content-Pipeline-Addin似乎是一个可行的基本内容管道,但下载插件的链接不起作用。
目前有没有办法在Mac上轻松处理MonoGame中的纹理和字体?
答案 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上也是如此。