我刚刚为我的游戏重新制作了保存系统。为此,我使用 Directory.GetDirectories 和一个数组来存储它。问题是,加载时,加载代码仅加载与文件夹数量相同的值。数组string[] profiles不同,但加载的内容不同 ( ProfilesData)。
我也尝试过用谷歌搜索,但我想我搜索到了错误的东西。解决方案很可能已得到解答,但我不确定要搜索什么。我自己也尝试过调试一下。我可以看到加载时“值”是相同的,但我不知道为什么。
这是第一个获取数组的脚本,它应该更改路径。
//Gets all Directories in the Profiles folder
string[] profiles = Directory.GetDirectories(Application.persistentDataPath + "/Profiles/");
for (int i = 0; i < profiles.Length; i++)
{
PlayerPrefs.SetString("Path", profiles.GetValue(i).ToString());
AddProfiles();
Debug.Log(PlayerPrefs.GetString("Path"));
}
这是执行 UI 的加载操作。
public void AddProfiles()
{
ProfilesData data = SaveProfiles.LoadProfiles();
img = data.profileImage;
ProfilesUIClone = Instantiate(ProfilesUI) as GameObject;
ProfilesUIClone.transform.SetParent(wheretomaketheprofileUI.transform.parent);
Profile = ProfilesUIClone.transform.Find("SelectProfile").transform.Find("Name").GetComponentInChildren<Text>();
Company = ProfilesUIClone.transform.Find("SelectProfile").transform.Find("Company").GetComponentInChildren<Text>();
Profile.text = data.profileName;
Company.text = data.companyName;
ProfilesUIClone.SetActive(true);
if (img == 0)
{
Image = ProfilesUIClone.transform.Find("SelectProfile").transform.Find("ProfileImage1").GetComponent<Image>();
Image.gameObject.SetActive(true);
}
else if (img == 1)
{
Image = ProfilesUIClone.transform.Find("SelectProfile").transform.Find("ProfileImage2").GetComponent<Image>();
Image.gameObject.SetActive(true);
}
else if (img == 2)
{
Image = ProfilesUIClone.transform.Find("SelectProfile").transform.Find("ProfileImage3").GetComponent<Image>();
Image.gameObject.SetActive(true);
}
}
我希望它会按应有的方式加载所有不同的配置文件,但事实并非如此,它只是加载其中一个值并将其应用于所有配置文件。
斯蒂芬大帝