在Silverlight中动态加载设置

时间:2011-06-19 18:32:23

标签: c# silverlight

我正在制作一个简单的游戏,用Silverlight编写。我要做的是允许更改游戏外观(使用的图像,播放的声音和游戏中对象的位置),而无需修改或重新编译任何Silverlight代码。

我尝试采用的方法是将“ID”传递给Silverlight对象。该ID将被注入所有资源的URL中。

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

如果我制作另一个HTML页面并传入GameID为2,我会得到一组完全不同的图像和声音。该部分似乎正常工作(即使它被误导)。

但我也有一些配置项,比如屏幕上某些东西的位置以及影响游戏玩法的一些规则。我想把它扔进一个XML文件,并让游戏使用相同的方法加载图像和声音 - 但我似乎无法让它工作。我还没有找到任何同步下载文件的方法。

我有一些想法 - 让我自己的'加载屏幕'异步下载文件,阅读文件/设置游戏,让游戏开始。但我觉得我可能会重新发明轮子或做一些愚蠢的事情。

有没有更好的方法来实现这一目标?

2 个答案:

答案 0 :(得分:0)

在某种程度上是的,你会重新发明轮子,但你重新发明的轮子并不是特别复杂。如果您正在创建一系列业务应用程序,则可能会使用Silverlight工具包的BusyIndicator控件。此控件允许在显着的后台活动运行时显示一些“正在加载...”UI。

您可以将此作为起点,但是您可能希望替换其默认样式,特别是样式中的默认模板,以显示与游戏图形保持一致的UI。

但是,仅包含此功能的工具包可能不是一个很好的权衡。创建了自己的模板后,可以很容易地重新创建模板后面的非常简单的控件。所以,是的,你会重新创建轮子,但大部分努力都是在你的游戏独有的图形中,其余的可能是一个值得的权衡,因为你不必在你的项目中包含工具包dll。

答案 1 :(得分:0)

只要用户意识到'某事'正在进行/正在进行他们会很高兴,我认为加载屏幕是完全可以接受的,特别是在游戏社区,几乎每个游戏都要求你等待地图等加载