MonoGame 适配多种设备分辨率运行库ScalingClever
MonoGame 适配多种设备分辨率运行库。
NuGet:
https://www.nuget.org/packages/ScalingClever.UWP
https://www.nuget.org/packages/ScalingClever.Android
https://www.nuget.org/packages/ScalingClever.iOS
https://www.nuget.org/packages/ScalingClever.WP81
源码地址:https://github.com/chengcong/ScalingClever
功能:1.根据设备分辨率等比例放大游戏界面,全屏适配。2.触控点根据设备分辨率等比例放大,全屏适配
iOS,Android,UWP通用使用方法如下(1.0.3):
1.初始化Initialize()方法中加入:
1 |
ScalingClever.ResolutionScaling.Initialize(this, new Point(800, 480)); |
2.在LoadContent加入:
1 |
ScalingClever.ResolutionScaling.LoadContent(this, new Point(800, 480)); |
如果是UWP平台,该方法放在BeginDraw()方法中
3.重写BeginDraw()和EndDraw()
1 2 3 4 5 6 7 8 9 10 11 |
protected override bool BeginDraw() { //ScalingClever.ResolutionScaling.Initialize(this,new Point(800, 480)); ScalingClever.ResolutionScaling.BeginDraw(this); return base.BeginDraw(); } protected override void EndDraw() { ScalingClever.ResolutionScaling.EndDraw(this, spriteBatch); base.EndDraw(); } |
4.Update(GameTime gameTime)触控或点击坐标处理:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
var touches = TouchPanel.GetState(); foreach (var touch in touches) { if (touch.State != TouchLocationState.Pressed) { var postion = ScalingClever.ResolutionScaling.Position(touch.Position); var X = ScalingClever.ResolutionScaling.X(touch.Position.X); var Y = ScalingClever.ResolutionScaling.Y(touch.Position.Y); } } |
iOS平台使用方法:
1.打开iOS项目的Program.cs文件,在FinishedLaunching(UIApplication app)的RunGame();代码后加入
1 |
ScalingClever.ResolutionScaling.FinishedLaunching(new CoreGraphics.CGSize(800, 480)); |
2.找到类似如下设置缓冲区尺寸的代码,删除掉。没有,请忽略。(原因:https://www.xnadevelop.com/ios/monogame-setting-buffer-size-considerations-on-the-ios-platform/)
1 2 3 |
this.graphics.PreferredBackBufferWidth = 800; this.graphics.PreferredBackBufferHeight = 480; this.graphics.ApplyChanges(); |
Android平台使用方法:
1.使用通用方法1,2,3,作用是放大视图
2.找到Android项目中的Activity1.cs,在修改OnCreate方法中的代码如下所示:
1 2 3 4 5 6 7 8 9 10 11 |
protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); var g = new Game1(); var view = (View)g.Services.GetService(typeof(View)); //全屏放大游戏触控坐标 var _view=ScalingClever.ResolutionScaling.OnCreate(view, new Point(800, 480)); SetContentView(_view); g.Run(); } |
如果您对C#游戏开发感兴趣,可以扫下面二维码加入我们的QQ群来一起学习交流
原创文章,转载请注明本文链接地址(违者必究):MonoGame 适配多种设备分辨率运行库ScalingClever