【发布时间】:2017-01-18 10:49:08
【问题描述】:
我有一个问答游戏,在游戏结束时,我想显示前 10 名的排行榜及其姓名和得分,例如:Ioue 500。
现在我每次用户得分时都会添加分数,并且我正在检查高分。但是我不确定如何做排行榜。有人可以指导我吗?
这个脚本是用户注册的地方,这是一个不同的场景。
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
using System.Linq;
using System.Text.RegularExpressions;
using System.IO;
using System;
public class Registration : MonoBehaviour
{
public Text name;
public static Registration _instace;
private void Awake()
{
_instace = this;
}
/// <summary>
/// Performs data validation and registers user
/// </summary>
public void Register()
{
string data;
string currentUser = string.Empty;
string userName;
data = GetData(name);
if (data == null || string.IsNullOrEmpty(data))
{
Recolor(name, errorColor);
return;
}
else
{
userName = data;
currentUser += data + ";";
}
string previousDirectory = Directory.GetCurrentDirectory();
Directory.SetCurrentDirectory(Application.persistentDataPath);
if (File.Exists("Users.csv"))
{
string[] users = File.ReadAllLines("Users.csv");
foreach (string user in users)
{
string[] parts = user.Split(";".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
}
}
File.AppendAllText("Users.csv", currentUser + Environment.NewLine);
Directory.SetCurrentDirectory(previousDirectory);
SceneManager.LoadScene(nextScene);
}
// Gets input data from control group provided
string GetData(Graphic group)
{
InputField inputField = group.GetComponentInChildren<InputField>();
if (inputField != null)
{
return inputField.text;
}
return null;
}
// Gets input data from control group provided
string GetDataD(Graphic group)
{
Dropdown inputField = group.GetComponentInChildren<Dropdown>();
if (inputField != null)
{
return inputField.captionText.text;
}
return null;
}
}
我添加分数的地方是当玩家得到正确答案时
if (isCorrect)
{
theAnswerIsCorrect = true;
playerScore += 20;
scoreDisplayText.text = "Score: " + playerScore.ToString();
}
这是我比较新旧分数的地方:
public void submitNewPlayerScore(int newScore)
{
if (newScore > playerProgress.highestScore)
{
playerProgress.highestScore = newScore;
SavePlayerProgress();
}
}
现在我需要有很多用户在玩,我只想显示前 10 名用户的名字和高分。谢谢!
【问题讨论】:
-
用户的分数是否保存在文件中?
-
有点题外话,但是这个项目来自教程吗?我最近看到很多关于具有类似名称变量的问答游戏的问题。
-
是的,它来自 Unity 实时会话教程
-
只有用户保存在文件中。使用 playerPerfs 保存分数