VMware Workstation 安装Mac OS相关工具下载
一、下载相关工具
1.下载安装VMware12
https://pan.baidu.com/s/1nu6dxfr 密码: u8kh
VMware 12 专业版永久许可证密钥
5A02H-AU243-TZJ49-GTC7K-3C61N
2.下载VMware MAC解锁工具
https://pan.baidu.com/s/1cit2fc 密码: bnmg
使用C#开发跨平台游戏
一、下载相关工具
1.下载安装VMware12
https://pan.baidu.com/s/1nu6dxfr 密码: u8kh
VMware 12 专业版永久许可证密钥
5A02H-AU243-TZJ49-GTC7K-3C61N
2.下载VMware MAC解锁工具
https://pan.baidu.com/s/1cit2fc 密码: bnmg
为了让MonoGame编写的代码能跨平台编译运行要注意资源文件(Content目录中文件)的命名,错误的命名会出现意想不到,甚至莫名其妙的错误。比如名字带了特殊字符“+”号就会导致在iOS平台出现The “CollectBundleResources” task failed unexpectedly.错误。在windows平台却没有问题。
MonoGame开发手机游戏最大的缺陷是安装包太大。小游戏打包后的尺寸基本都在20MB以上。造成包大的原因是资源文件。比如:一个png文件编译成xnb以后体积会增大好几倍。所以为了压缩安装包的尺寸可以放弃使用xnb作为资源文件,可以直接使用png文件。方法是用TitleContainer代替Content加载资源。
iOS早期的屏幕大小是固定,游戏界面的位置通常采用绝对定位。为了保证迁移的顺利,只需要放大iOS的根视图即可解决iPhone尺寸变大的问题!方法如下:
MonoGame的iOS项目模板新建以后无法直接编译运行,会报错误。
iOS平台使用Microsoft.Devices.Sensors.Accelerometer制作重力感应游戏要注意plist文件中屏幕方向的设置。如果游戏使用了上下左右四个方向重力加速度,那么取消plist文件中任何一个方向会造成游戏闪退。Debug过程中很难找到崩溃原因。所以要注意这个细节。
MonoGame在iOS平台使用Microsoft.Devices.Sensors.Accelerometer会出现重力感应不灵敏的问题。monogame版本是3.5.1
MonoGame的价值在于可以将原XNA游戏移植到iOS和Android平台。移植基础是Xamarin。在Xamarin.iOS缺少System.IO.IsolatedStorage.IsolatedStorageSettings类。这个类通常用来存储游戏数据状态,非常重要。下面提供IsolatedStorageSettings在iOS平台的实现代码:
MonoGame v3.5.1 使用SoundEffect播放音频文件时会出现0x88960001错误。详细如下:
HRESULT: [0x88960001], Module: [SharpDX.XAudio2], ApiCode: [XAUDIO2_E_INVALID_CALL/InvalidCall], Message: Unknown
很明显是第三方SharpDX的问题,可能是音频文件格式也可能是其他的。
MonoGame成功打包pkg用Application Loader上传报如下错误:
MonoGame 3.5.1有一个bug。明明已经using了Microsoft.Xna.Framework.Media还是会提示:The type or namespace name ‘XXXX’ does not exist in the namespace ‘MediaPlayer’ (are you missing an assembly reference?)
MonoGame 3.5.1在iOS,Windows Phone(其他平台未测试)中使用Mouse.GetState()方式获取坐标点始终是0。这是MonoGame的一个Bug。
解决办法:
1.等官方修复,请关注MonoGame最新进展 https://github.com/MonoGame/MonoGame
2.自己下载源码修复
3.本站提供临时解决办法:
MonoGame 目前最新版未提供Windows Phone 8.0 Library的项目模板,如果有需要可以手动新建模板。步骤如下:
1.新建WP8的Library项目
1.关闭所有打开的Visual Studio.
2.打开文件管理器将%LOCALAPPDATA%\Microsoft\Phone Tools\CoreCon\复制粘贴到导航栏按回车。删除该目录的所有文件夹