• Windows Phone 7 XNA4 游戏开发全面速查资料


     

    Update 2010-11-24(*u2*)

    Update 2010-11-23(*u*)

    XNA4在wp7上的分辨率问题

    大部分情况下自动设置都能令你满意

    wp7上的全屏就是全屏,非全屏就是上面留一条给电量显示云云的。默认为非全屏模式。

    wp7上的最大分辨率是 800*480 或者 480*800 ,小于此分辨率自动同比放大,黑色填充不满的区域。

    你设置高比宽大 默认是竖屏。设置高比宽小,默认是横屏,左右翻转手机时自动切换。宽高相等认为是竖屏。

    虽然也可以通过设置允许的旋转方向来改变这个行为。大部分情况都没有意义。

    除非你设置一个分辨率480*480 你可以让他 竖屏 左 右 全部自适应。

    非方形的分辨率 同时打开竖屏和左右的支持,会被强制成竖屏,左右旋转时会有分辨率bug。

    如果你需要一个任意旋转的屏幕,调用陀螺仪和自己控制绘制方向恐怕是唯一的办法。

     

    XNA4 分为两个标准配置 reach 和 high

    high能用于pc和xbox,

    wp7 在reach配置的基础上还不允许customshader

    WP7上的开发环境是 dotnet framework 3.5 compact   pure c#

    不用奇怪,很多东西没有,没有完整的反射,没有二进制序列化,没有一些数据结构比如sortedlist

    WP7调试没有PC端方便

    wp7没有编辑并继续,不能附加到进程,所以应该建立同步的pc项目。

    只要编译能在两个平台上通过,由pc项目转换到wp7调试是很简单的,单这一项就足以为你节省很多时间。

    wp7上的可用存储

    TitleContainer

    访问随程序一起发布的资源:我们通常称为bin\

    IsolatedStorage

    访问分配给应用程序的临时存储区,临时存储区不确定性太强,生存期和容量都没有保证。

    官方建议是用临时存储区保存本地存档,实际上,我觉得他连保存存档都不合格。

    这基本上只能类似等同于IE临时文件,PC上对于silverlight的临时存储区,一个应用默认只有1M配额,wp7未经测试

    (*u*)在模拟器测试,配额接口返回值异常,可用临时存储区两个G,只能在一个应用中使用。仍然需要真机测试

    用户存储区

    没有办法在用户存储区存储任意文件,这是因为wp7本身就抛弃了资源管理器这样的设计,当然破解无所不能。

    要收钱的游戏不能用破解手段,取代用户存储区的是

    MediaLibrary

    可以存储图片,可以读取图片音乐缩略图专辑等信息

    如果要保存存档,可以把信息编码在图片中保存,其他类型的数据也可以,这个功能不能在pc端和wp7模拟器中测试

    拿到真机后,我会对这个功能做更详细的测试。

    这将是唯一可在本地跨应用交换数据的手段,对MediaLibrary的深入研究灰常有必要,为了避免一切可能的封锁,直接将信息编码到图片是最可靠的方式。

    只要我们转换思路,wp7的限制并不是那么强

    (*u*)和文档不同,在模拟器上可以调用此接口,文件名只要不是.jpg结尾,一定会删除最后一节扩展名改为.jpg.

    允许重名文件,无法删除和修改已存在文件。

    文件流必须是jpg文件格式,否则会出错。

    在jpg文件格式之后可以追加写入数据,可正常读取出来。

    仍然需要真机测试重名问题,虽然可以跨应用通讯,但是只能追加不能修改还是产生了比较大的应用限制。

    wp7上的输入

    文字录入

    调用Guide.BeginShowKeyboardInput 可以调用标准的输入面板

    建议使用这个玩意,现在已经可以输入6国语言,虽然还不包括中文,但我们都知道那只是个时间问题。

    touch

    支持触摸点状态检测和手势

    忘记手势吧,那不会带来更好的体验

    大部分的操作都是单手完成的,点击,拖动,长按。

    制作自由的两点操作,比如一个自由控制摄像机的方案,我已经实现了,效果很不错的。

    输入的特点就是要简洁,多一点想象力,不要用手势去束缚。

    button

    WP7只支持一个按钮Back ,其他是xbox的,此back就是wp7标准按钮左下角的回退。

    微软对响应此按钮的事件做出了详细要求,在子界面要能够退回上一层,可以插入对话框来确认,在对话框显示时再按回退,即表示同意回退。

    在主菜单回退则退出应用。

    wp7程序退出和恢复

    wp7程序退出和恢复,官方虽然有要求,但他什么也没做。

    按下开始键或者搜索键时,你没有任何机会

    OnExiting事件被执行,同时界面已经退出,你不可能拦截他,也不可能给用户任何提示。你

    你只能在OnExiting里慢慢向临时存储区保存你的程序状态,或者不保存,那你的程序再也回不到这个状态了。

    程序恢复没有任何通知,他就是和新开一个程序没有两样。

    所以你应该检查你之前有没有保存过状态,有,就恢复他。

    (*u*)观察内嵌office程序的行为明显可以区分恢复和运行,经检查silverlight的事件是可以区分开恢复和运行

    (*u2*)PhoneApplicationService.Current,这个在XNA里也可以使用,game默认的事件无用,直接在这上面可以有所有的事件。可以用这里的state存储要恢复的对象。

    需要注意不可以在OnExiting事件里存储state,该对象已经无用。也不可在Game构造函数中恢复数据,

    wp7可以借鉴什么

    dotnet cf,以前搞嵌入式开发的家伙们,都是前辈。

    wp7的唯一识别

    目前拿不到绑定的liveid

    xbox live 系列接口只能在真机调试

    wp7推送服务可以产生一个唯一识别,不知道是硬件相关还是绑定id相关,这必须要两台以上真机才可以确定。

  • 相关阅读:
    原型模式(8)
    工厂方法模式(7)
    代理模式(6)
    装饰模式(5)
    策略模式与简单工厂结合(4)
    策略模式(3)
    简单工厂模式(2)
    序(1)
    国际控制报文协议ICMP
    IP 转发分组的流程
  • 原文地址:https://www.cnblogs.com/crazylights/p/1884026.html
Copyright © 2020-2023  润新知