在Windows 10 UWP应用程序中存储用户的分数?

时间:2016-05-07 18:36:07

标签: c# windows xaml win-universal-app

我正在制作教育游戏(Windows 10 UWP,C#+ XAML),我需要存储用户信息(特别是他们当前的分数),并在他们再次启动应用程序时检索它。我找到了一种方法(见下面的代码),但我不知道这是否是这个问题的正常解决方案。我目前正在创建一个txt文件,并在其中存储和检索数据。有更常见或更简单的方法吗?

以下是我目前正在做的事情:

创建文件:

StorageFolder storageFolder = ApplicationData.Current.LocalFolder;
StorageFile sampleFile = await storageFolder.CreateFileAsync("nameOfTextFile.txt", CreationCollisionOption.OpenIfExists); //other options are ReplaceExisting

打开文件:

StorageFolder storageFolder = ApplicationData.Current.LocalFolder;
StorageFile sampleFile = await storageFolder.GetFileAsync("nameOfTextFile.txt");

将文字写入文件:

  await FileIO.WriteTextAsync(sampleFile, "Put the added text here");

从文件中读取文字:

string someVariableName = await FileIO.ReadTextAsync(sampleFile);

- 提前感谢任何帮助!!

3 个答案:

答案 0 :(得分:2)

虽然基于文件的方法有效,但有更简单的方法,至少对于简单数据:您可以使用漫游(或本地)设置。例如,漫游设置在设备之间漫游,只要它们的大小不超过64K,并且将用户桌面的分数带到用户的电话。本地设置保留在机器上。

设置易于使用:

IPropertySet propertySet = ApplicationData.Current.RoamingSettings.Values;

// Get previous score (or 0 if none)
int score = (int)(propertySet["Score"] ?? 0);

// ...play game...

// Set updated score:
propertySet["Score"] = score;

答案 1 :(得分:0)

我开始做这样的项目和设置的方法是在Visual Studio中创建一个设置,然后设置和获取设置/值。

您可以转到应用程序属性来访问它。 这允许访问读取,写入和保存信息/上载恢复信息。

一些信息链接: https://msdn.microsoft.com/en-us/library/bb397755(v=vs.110).aspx

和(建议)

https://msdn.microsoft.com/en-us/library/aa730869(v=vs.80).aspx

答案 2 :(得分:0)

好的,所以这里是一个使用类来存储你的设置的例子。

你可以做很多很多方法。列出太多了。

创建设置类

public class YourSettingsClass
{
    public string UserFirstName { get; set; }
    public string UserLastName { get; set; }
    public string UserScore { get; set; }
}

创建AppSettings助手

public AppSettings
{
    private static YourSettingsClass _settings = new YourSettingsClass();

    public static string UserFirstName
    {
        get { return _settings.UserFirstName; }
        set { _settings.UserFirstName = value; }
    }

    public static string UserLastName
    {
        get { return _settings.UserLastName; }
        set { _settings.UserLastName = value; }
    }

    public static string UserScore
    {
        get { return _settings.UserScore; }
        set { _settings.UserScore = value; }
    }

    public static void SaveSettings()
    {
        // Now, use your "settingsfile.xml" (or whatever you're saving as)
        // to write your settings to from your _settings static field object.

        // I'll let you have a play as to how you want to do this...
    }

    public static void LoadSettings()
    {
        YourSettingsClass tempSettingsClass = new YourSettingsClass();

        // Now, use your "settingsfile.xml" (or whatever you've saved it as)
        // to load in your settings and assign to your tempSettingsClass variable.

        // I'll let you have a play as to how you want to do this...

        // Assign the settings from your loaded object.
        _settings = tempSettingsClass;
    }
}

现在,您可以从任何其他班级拨打AppSettings.LoadSettings()。您可以在App Startup或按需上执行此操作。

当您加载设置时,只需引用AppSettings.UserFirstName或您想要的任何属性get值或set值。

准备好之后,您可以通过AppSettings.SaveSettings()将设置保存回磁盘上的XML文件。

我故意省略了从存储中加载和保存的代码,以及用于对类对象进行se /反序列化的代码,因为我在这台PC上没有任何UWP组件而且我已经从内存中完成了所有操作所以我不知道我想放任何东西让你失望。

另外,你可以做更多的学习(甚至试用/错误)。

<强>最后

get静态属性的AppSettings个文件中,您还可以nullstring.IsNullOrWhiteSpace检查相关的_settings'属性,以及如果是,请调用LoadSettings()方法。

这样可以节省您在别处手动调用代码的过程。

有用的链接

XmlSerializer and how to use the Serialize method

All about what you can do with the FileIO.WriteTextAsync

不是文章,而是类似的问题:UWP C# Read & Write XML File

我真的希望这会有所帮助。

祝你好运!