文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>[Teaching] [Silverlight] 30秒快速建立遊戲迴圈 (Game Loop)

[Teaching] [Silverlight] 30秒快速建立遊戲迴圈 (Game Loop)

时间:2010-08-30  来源:B+

如果你想拿Silverlight開發遊戲,不管是在PC上採用Silverlight 3、4,或是Windows phone 7上採用Silverlight for windows phone,都離不開先建立一個遊戲迴圈 (Game Loop)。

一般開發應用程式,通常都是採用事件驅動,當有任何按鈕被按下,或是資料被更新時,觸發相對應的程式,開始進行處理。

而遊戲的開發,則採用了時間驅動,在固定的時間內,自動觸發程式碼,來處理各項工作。

這是由於遊戲必須不斷偵測及改變畫面上的各項物件變化,因此必須要在固定的時間內,重新針對所有畫面上的元素,以及使用者輸入的訊號,做一次檢核。

那為什麼遊戲不能採用事件驅動來開發呢? 事實上,並不是不能採用事件驅動來開發,而是得看的遊戲類型和規模是不是適合不必建立遊戲迴圈 (Game Loop)。

簡單來說,如果你的遊戲並沒有不斷變動位置或是狀態的AI角色,或是需要即時偵測的輸入指令,例如你想做一個丟骰子的遊戲,或是抽牌比大小的遊戲,是可以考慮不建立任何額外的遊戲迴圈 (Game Loop)。

那甚麼時候該使用遊戲迴圈 (Game Loop)呢? 假使有50個NPC需要同時移動到不同的位置,產生不同的動作,並且除了該NPC被消滅,否則他都會一直隨機的變換位置和隨機動作,這時候你就需要一個遊戲迴圈 (Game Loop),來處理這些NPC了。

Silverlight 中建立遊戲迴圈 (Game Loop)的方式有非常多種,可參考下列文章:

http://blogs.msdn.com/b/nikola/archive/2009/08/19/exposed-5-methods-to-create-game-loop-which-is-the-best.aspx

今天,我將介紹兩個非常簡單的方式,透過StoryBoard和Silverlight 4中的新行為CallMethodAction建立遊戲迴圈 (Game Loop)

 

Silverlight 3、Windows phone 7

在Silverlight 3和Windows phone 7中,我們將建立一個StoryBoard當作計時器,透過Duration來設定每一個迴圈執行的時間,通常遊戲會以每秒能處理多少張數或是格數來計算,在Silverlight 中由於並不是真正每次都重新繪製圖型,所以並沒有很明確的張數或格數的概念,但我們不妨還是採用這樣的概念來進行設計,假設是要每秒30的fps,那Duration就必須設定為0.033秒更新一次。

而StoryBoard中有一個Completed事件,當Completed時執行程式碼,就可以透過StoryBoard來達成遊戲迴圈 (Game Loop)的效果,實作方式如下。

 

1. 首先透過Blend建立一個StoryBoard

 
2. 建立完成後,可以先不作任何動作,就按下關閉。

 
3. 建立ControlStoryboardAction行為

 

4. 設定ControlStoryboardAction。透過ControlStoryboardAction行為,讓StoryBoard在載入後可以自動Begin

 

5. 透過xaml碼,設定StoryBoard的Duration和Completed

 

6. 在.cs中,會出現對應的方法,在這裡頭就可以寫入遊戲的更新邏輯。

 

Silverlight 4

在Silverlight 4中多了一個CallMethodAction行為。我們可以透過這個行為,搭配TimerTrigger,同樣可以達到遊戲迴圈 (Game Loop)的效果,實作方式如下。

 

1. 先在.cs內寫一個方法。

 

2. 設定CallMethodAction行為

 

3. CallMethodAction預設的Triggertype是eventTrigger,我們需要將它變更為TimerTrigger

 

4. 設定TimerTrigger

 

5. 設定TimerTrigger的MillisecondsPerTick,也就是多少毫秒要觸發,以每秒30fps來說,就是每隔0.033秒要觸發,換算為毫秒則是33毫秒。

 

6. 最後設定MethodName和TargetObject,TargetObject請設為該Usercontrol。

Copyright © 2010 B+ Studio.

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载