【发布时间】:2018-03-11 03:11:06
【问题描述】:
当我尝试使用PlayerPrefsManager.SetFood() 时,它会设置所有播放器首选项字符串。因此,如果我执行PlayerPrefsManager.SetFood(Monday, Bread),它会将MONDAY_KEY、TUESDAY_KEY、WEDNESDAY_KEY 等设置为Bread。有人可以指出我的错误吗?
编辑:我知道 SetFood 函数中的所有 if 语句(而不是 else if 语句),但由于可以同时调用该函数的 2 个或多个实例,我替换了所有 else if 语句(我不确定这是否是正确的措辞)。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerPrefsManager : MonoBehaviour {
const string MONDAY_KEY = "null";
const string TUESDAY_KEY = "null";
const string WEDNESDAY_KEY = "null";
const string THURSDAY_KEY = "null";
const string FRIDAY_KEY = "null";
const string SATURDAY_KEY = "null";
const string SUNDAY_KEY = "null";
public static string GetFood (string Day){
if (Day == "Monday") {
return PlayerPrefs.GetString (MONDAY_KEY);
} else if (Day == "Tuesday") {
return PlayerPrefs.GetString (TUESDAY_KEY);
} else if (Day == "Wednesday") {
return PlayerPrefs.GetString (WEDNESDAY_KEY);
} else if (Day == "Thursday") {
return PlayerPrefs.GetString (THURSDAY_KEY);
} else if (Day == "Friday") {
return PlayerPrefs.GetString (FRIDAY_KEY);
} else if (Day == "Saturday") {
return PlayerPrefs.GetString (SATURDAY_KEY);
} else if (Day == "Sunday") {
return PlayerPrefs.GetString (SUNDAY_KEY);
} else{
return "Day out of range";
}
}
public static void SetFood (string Day, string Food){
if (Day == "Monday") {
PlayerPrefs.SetString (MONDAY_KEY, Food);
} if (Day == "Tuesday") {
PlayerPrefs.SetString (TUESDAY_KEY, Food);
} if (Day == "Wednesday") {
PlayerPrefs.SetString (WEDNESDAY_KEY, Food);
} if (Day == "Thursday") {
PlayerPrefs.SetString (THURSDAY_KEY, Food);
} if (Day == "Friday") {
PlayerPrefs.SetString (FRIDAY_KEY, Food);
} if (Day == "Saturday") {
PlayerPrefs.SetString (SATURDAY_KEY, Food);
} if (Day == "Sunday") {
PlayerPrefs.SetString (SUNDAY_KEY, Food);
} if (!(Day == "Monday") || (Day == "Tuesday") || (Day == "Wednesday") || (Day == "Thursday") || (Day == "Friday") || (Day == "Saturday") || (Day == "Sunday")) {
Debug.LogError ("Day out of range");
}
}
}
【问题讨论】:
-
您是否尝试过使用调试器?您可以尝试的另一件事是在每个 if 的末尾添加一个 return 语句。例如。
if (Day == "Monday") { PlayerPrefs.SetString (MONDAY_KEY, Food); return; } -
我做了一个Debug.Log和每条语句的结尾。它没有用,但感谢您的建议。