C# 在Silverlight中动态加载设置

C# 在Silverlight中动态加载设置,c#,silverlight,C#,Silverlight,我有一个用Silverlight编写的简单游戏。我试图做的是允许在不修改或重新编译任何Silverlight代码的情况下更改游戏外观(使用的图像、播放的声音以及游戏中对象的位置) 我尝试采用的方法是向Silverlight对象传递一个“ID”。该ID被注入所有资源的URL中 如果我创建另一个HTML页面并传入一个2的GameID,我会得到一组完全不同的图像和声音。该部件似乎工作正常(即使被误导) 但我也有一些配置项,比如屏幕上某些东西的位置和一些影响游戏性的规则。我想把它放到一个XML文件中,

我有一个用Silverlight编写的简单游戏。我试图做的是允许在不修改或重新编译任何Silverlight代码的情况下更改游戏外观(使用的图像、播放的声音以及游戏中对象的位置)

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

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

但我也有一些配置项,比如屏幕上某些东西的位置和一些影响游戏性的规则。我想把它放到一个XML文件中,让游戏用同样的方法加载文件,处理图像和声音,但我似乎无法让它工作。我还没有找到任何同步下载文件的方法

我有一些想法——制作自己的“加载屏幕”,异步下载文件,读取文件/设置游戏,让游戏开始。但我有一种感觉,我可能正在重新发明轮子,或者做一些愚蠢的事情


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

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

您可以将此作为起点,但是您可能希望替换其默认样式,特别是样式中的默认模板,以呈现符合游戏图形的UI


但是,仅包含用于此功能的工具包可能不是一个好的折衷方案。创建了自己的模板后,很容易重新创建位于模板后面的非常简单的控件。因此,是的,你会重新创建轮子,但大部分工作都是在游戏特有的图形中进行的,剩下的工作可能是值得的,因为不必在项目中包含工具箱dll。

只要用户意识到“某些事情”正在进行/正在进行,他们就会很高兴,我认为加载屏幕是完全可以接受的,尤其是在游戏社区中,几乎每个游戏都要求您等待地图等加载

您没有提供足够的信息来解决问题。您应该能够使用WebClient实例异步下载XML。到底是什么让你失败了?XML文件定义了UI;因此,在下载和处理之前,我没有任何东西可以向用户显示(除了可能的通用加载屏幕)。我只是想问,是否有更好的方法来存储或访问这样的东西。你最后提出的问题似乎与你给出的标题不太相关。