2011-06-19 78 views
1

我有一個簡單的遊戲,我正在使用Silverlight編寫。我想要做的是允許在不修改或重新編譯任何Silverlight代碼的情況下更改遊戲外觀(所用圖像,播放聲音以及遊戲中對象的位置)。在Silverlight中動態加載設置

我試圖採取的方法是將'ID'傳遞給Silverlight對象。該ID被注入到所有資源的URL中。

http://myServer.com/MyGame/1/Images/1.png

如果我再拍HTML頁面,並通過在2的遊戲ID,我得到一套完全不同的圖像和聲音。該部分似乎工作正常(即使它被誤導)。

但我也有一些配置項目,如屏幕上某些東西的位置和一些影響遊戲性的規則。我想把它放到一個XML文件中,讓遊戲使用圖像和聲音的相同方法加載文件 - 但我似乎無法使它工作。我還沒有找到任何方式來同步下載文件。

我有一些想法 - 使我自己的'加載屏幕'異步下載文件,閱讀文件/設置遊戲,讓遊戲開始。但是我感覺我可能會重新發明輪子或者做一些愚蠢的事情。

有沒有更好的方法來實現這個目標?

+0

您沒有真正提供足夠的信息來解決問題。您應該能夠使用WebClient實例異步下載您的XML。什麼是你失敗了? – ColinE

+0

XML文件定義了UI;所以直到它被下載和處理,我沒有任何東西可以顯示用戶(除了可能的通用加載屏幕)。我只是在質疑是否有更好的方式來存儲或訪問這樣的內容。 –

+0

你似乎最終提出的問題與你給它的頭銜無關。 – AnthonyWJones

回答

0

在某種程度上是的,你會重新發明輪子,但你正在重新發明的輪子不是一個特別複雜的輪子。如果您創建的是業務線應用程序,則可能會使用Silverlight工具包的BusyIndicator控件。此控件允許在顯着的後臺活動運行時顯示一些「加載...」UI。

你可以用這個作爲起點,但是你可能想要替換它的默認樣式,特別是樣式中的默認模板,以保持遊戲圖形的UI。

但是,包括僅用於此功能的工具包可能不是一個好的折衷。創建了自己的模板後,可以很容易地重新創建位於模板後面的非常簡單的控件。所以是的,你會重新創建輪子,但大部分的努力將會在遊戲中獨一無二的圖形中,其餘的可能是一個值得的權衡,因爲不必在工程中包含工具包DLL。

0

只要用戶意識到'某事'正在進行/正在進行,他們會很高興,我認爲一個加載屏幕是完全可以接受的,特別是在幾乎每個遊戲都要求您等待地圖等的遊戲社區中加載

相關問題