Windows Phone 7 XNA4 遊戲開發全面速查資料

來源:互聯網
上載者:User

 

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相關,這必須要兩台以上真機才可以確定。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.