我正在使用MonoGame为iOS开发游戏。该游戏已经使用MonoGame发布用于Windows 8(metro)。我们有MonoTouch,我有几个问题,但只有一个主要问题。我无法截取屏幕截图。能够截取屏幕截图是游戏中必不可少的组成部分,因为我们有游戏区域共享,因此其他用户将能够看到保存的游戏的外观。据我了解,这在develop3d分支中没有实现,但我从某人那里听说它是在较早版本的develop分支中实现的。有没有人知道解决这个问题的方法?这似乎是一件相当普遍的事情。
非常感谢任何帮助。
答案 0 :(得分:2)
对于UIKit屏幕,您可以使用:
UIScreen.Capture()
对于OpenGL屏幕,您可以使用:
iPhoneOSGameView.Capture()
答案 1 :(得分:0)
您可以使用原生iOS API执行此操作:
UIViewController controller = game.Services.GetService(typeof(UIViewController)) as UIViewController;
UIGraphics.BeginImageContext(controller.View.Frame.Size);
using (var context = UIGraphics.GetCurrentContext())
{
controller.View.Layer.RenderInContext(context);
using (var image = UIGraphics.GetImageFromCurrentImageContext())
{
//Save the image to file here
}
}
UIGraphics.EndImageContext();
检查错误,这是我的头脑。
我猜测XNA apis还没有实现。
答案 2 :(得分:0)
我实现了这个我自己,我打算创建公关但没有时间。我可以在这里找到用于创建屏幕截图的代码:Texture2D.cs我有一段时间没有与远程合并,所以不确定这将插入当前源的程度。请注意,您要查看的方法是SaveAsJpeg和SaveAsPng,但棘手的部分是GetTextureData()正确。完全有可能这个问题已经被其他人解决了。但这对我有用。