如何为Visual Studio 2013安装MonoGame模板?
我正在寻找一个跨平台的游戏开发框架.MonoGame看起来很容易学习和快速开发,但是我看到他们页面上的大部分游戏都不起作用,或者有很多错误.
任何人都可以解释MonoGame对于ios/droid专业手机游戏开发是否可靠?
所以我想学习C#和XNA,但经过一些研究后我注意到XNA显然已经死了,还有一个名为MonoGame的替代库使用XNA框架.
那么,我可以为MonoGame使用XNA课程/教程,还是编程完成方式的主要区别取决于你使用什么使XNA教程对MonoGame完全没用?
我使用MonoGame和Xamarin为Android开发了一款游戏.我将BugSense合并到其中并迅速开始获得以下异常堆栈跟踪:
System.NullReferenceException: Object reference not set to an instance of an object
at Microsoft.Xna.Framework.AndroidGameWindow.SetDisplayOrientation (Microsoft.Xna.Framework.DisplayOrientation) <0x001c4>
at Microsoft.Xna.Framework.AndroidGameWindow.SetOrientation (Microsoft.Xna.Framework.DisplayOrientation,bool) <0x00097>
at Microsoft.Xna.Framework.OrientationListener.OnOrientationChanged (int) <0x001c7>
at Android.Views.OrientationEventListener.n_OnOrientationChanged_I (intptr,intptr,int) <0x0003f>
at (wrapper dynamic-method) object.ed9d7c7c-f3e6-4d7a-9249-1a139a251aed (intptr,intptr,int) <0x00043>
Run Code Online (Sandbox Code Playgroud)
这就是我的活动设置方式:
[Activity(Label = "My Cool Game"
, MainLauncher = true
, Icon = "@drawable/icon"
, Theme = "@style/Theme.Splash"
, AlwaysRetainTaskState = true
, LaunchMode = Android.Content.PM.LaunchMode.SingleTask
, ScreenOrientation = ScreenOrientation.Portrait
, ConfigurationChanges = ConfigChanges.Orientation | ConfigChanges.Keyboard | ConfigChanges.KeyboardHidden)]
Run Code Online (Sandbox Code Playgroud)
在游戏构造函数中,我有以下内容:
public Game1()
{
_graphics = new GraphicsDeviceManager(this); …Run Code Online (Sandbox Code Playgroud) 我正在使用Monogame开发多点触控应用程序,其中多个用户可以同时处理具有单独文档/图像/视频的更大的多点触摸屏,我想知道是否可以使手势"具有上下文感知",即两个手指在墙壁的一侧捏住文件不应该影响某人平移墙壁的另一侧.
Monogame的工作方式是,所有输入点都转换为手势,可以使用以下方法读取:
if (TouchPanel.IsGestureAvailable)
{
var gesture = TouchPanel.ReadGesture();
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
有没有办法让手势限制在屏幕上的某个点,或者我是否需要自己实现?例如,通过查看源代码,看起来TouchPanelState该类完成了所有工作,但不幸的是它的构造函数是internal.
使用Graphics.DrawString将一组(相当静态的)文本渲染到屏幕外位图,将其转换为Texture2D一次,然后简单地调用SpriteBatch.Draw,而不是使用内容管道并使用渲染文本,是否有任何缺点SpriteFont?这基本上是一页文本,绘制成"纸张",但用户也可以选择调整字体大小,这意味着我必须包含不同大小的spritefonts.
由于这是一个仅限Windows的应用程序(不打算移植它),我可以访问所有字体,例如普通的WinForms应用程序,我相信使用Graphics.DrawString(甚至TextRenderer)使用精灵字体时渲染质量会好得多.
此外,似乎性能可能更好,因为SpriteBatch.DrawString需要在每次迭代中"渲染"整个文本(即分别为每个字母发送顶点),而使用位图我只做一次,所以它应该稍微减少工作量CPU方面.
[更新]
从技术方面来看,它似乎比通过精灵字体更好地完成文本渲染.如果它们是水平渲染的,我甚至会得到ClearType.可能存在的一个问题是字体的spritesheets(可能是?)在纹理内存方面比为文本页面创建单独的纹理更有效.
目前在我的游戏中我想尝试将我的物体移向x轴和y轴.我还想把它放到中心,我放了一个相机.这是我的相机代码 -
public class Camera
{
public Matrix transform;
public Viewport view;
public Vector2 origin;
Vector2 baseScreenSize = new Vector2(1136, 720);
float horScaling ;
float verScaling ;
Vector3 screenScalingFactor ;
public Camera(Viewport newView)
{
view = newView;
horScaling = view.Width / baseScreenSize.X;
verScaling = view.Height / baseScreenSize.Y;
screenScalingFactor = new Vector3(horScaling, verScaling, 1);
}
public void update(GameTime gt, ball pl)
{
origin = new Vector2(pl.Position.X + (pl.ballRectangle.Width / 2) - 400, 0);
transform = Matrix.CreateScale(1,1,0) *
Matrix.CreateTranslation(new Vector3(-origin.X, -origin.Y, 0)); …Run Code Online (Sandbox Code Playgroud) 在Visual Studio 2012中一个空白的新类库我试图添加对解决方案中现有项目的引用,也是一个类库,MonoGame.Framework.Windows8(https://github.com/mono/MonoGame),但是得到错误:
无法添加对Project MonoGame.Framework.Windows8的引用
我已成功构建了现有的库MonoGame,并使其成为新库的依赖项.可能是什么问题呢?
(这是非常烦人的错误消息没有给出理由!)
我试图获得我游戏的当前FPS,但是我只能找到每秒更新FPS变量的方法.例如https://github.com/CartBlanche/MonoGame-Samples/blob/master/Draw2D/FPSCounterComponent.cs和http://www.david-amador.com/2009/11/how-to-do-a-xna -fps计数器/
有没有办法持续更新FPS标签?
monogame ×10
c# ×8
xna ×5
.net-4.5 ×1
android ×1
drawstring ×1
frame-rate ×1
gesture ×1
mono ×1
multi-touch ×1
spritebatch ×1
spritefont ×1
uwp ×1
windows-8 ×1
xamarin.ios ×1
xna-4.0 ×1