Я просто переделал свою систему сохранения для своей игры.Для этого я использую 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"));
}
Это загрузочный, который выполняет пользовательский интерфейс.
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);
}
}
И это сам скрипт загрузки.
public static ProfilesData LoadProfiles()
{
string path = Application.persistentDataPath + "/Profiles/" + PlayerPrefs.GetString("ProfileName") + "/config.dat";
string path2 = PlayerPrefs.GetString("Path");
if (File.Exists(path))
{
BinaryFormatter formatter = new BinaryFormatter();
FileStream stream = new FileStream(path, FileMode.Open);
ProfilesData data = formatter.Deserialize(stream) as ProfilesData;
stream.Close();
return data;
}
else if (File.Exists(path2))
{
BinaryFormatter formatter = new BinaryFormatter();
FileStream stream = new FileStream(path2, FileMode.Open);
ProfilesData data = formatter.Deserialize(stream) as ProfilesData;
stream.Close();
return data;
}
else
{
Debug.LogError("Save file not found in " + path);
return null;
}
}
Я ожидаю, что он загружает всеразные профили, как и должно, но он не просто загружает одно из значений и помещает его для всех профилей.