Нужна ссылка на второй класс в другом скрипте
Всем привет, реализовывал в игре функцию сохранения данных, по гайдам сделал скрипт SaveSerial, в котором добавил класс SaveData. Теперь не могу сделать ссылку из другого скрипта на нужный мне метод из класса SaveData.
public class SaveSerial : MonoBehaviour
{
public static int coinSave;
private void Start()
{
}
}
[Serializable]
class SaveData
{
public int savedCoin;
public void SaveGame()
{
BinaryFormatter bf = new BinaryFormatter();
FileStream file = File.Create(Application.persistentDataPath + "/MySaveData.dat");
SaveData data = new SaveData();
data.savedCoin = SaveSerial.coinSave;
bf.Serialize(file, data);
file.Close();
}
}
Ответы (3 шт):
Автор решения: Vadim Vaganov
→ Ссылка
Для того, чтобы использовать его в другой сборке, нужно классу SaveData добавить модификатор public.
Автор решения: Женя Бадосов
→ Ссылка
Короче я просто передела сохранение на более здоровое, как мне кажется, я не обращался ко второму классу из вне, а просто перекидывал обращение из первого класса
public class SaveLoadManager : MonoBehaviour
{
string filePath;
public GameObject countCoin;
public CoinManager script;
private int coinCount;
public void Start()
{
filePath = Application.persistentDataPath + "/Saved.gamesave";
script = countCoin.GetComponent<CoinManager>();
}
public void SaveGame()
{
BinaryFormatter bf = new BinaryFormatter();
FileStream fs = new FileStream(filePath, FileMode.Create);
Save save = new Save();
save.SaveCoin(coinCount, script);
bf.Serialize(fs, save);
fs.Close();
}
public void LoadGame()
{
}
}
[System.Serializable]
public class Save
{
public void SaveCoin(int coinCount, CoinManager script)
{
script.Return(coinCount);
}
}
Автор решения: Ali
→ Ссылка
public class SaveSerial : MonoBehaviour
{
public static int coinSave;
private SaveData data1;
private void Start()
{
data1.SaveGame(); //вызываешь метод
}
}
[Serializable]
public class SaveData // обязательно public
{
public static SaveData saveData { get; set; } // делаешь класс статичным get и set на своё усмотрение приватизируй
public int savedCoin;
public void SaveGame()
{
BinaryFormatter bf = new BinaryFormatter();
FileStream file = File.Create(Application.persistentDataPath + "/MySaveData.dat");
SaveData data = new SaveData();
data.savedCoin = SaveSerial.coinSave;
bf.Serialize(file, data);
file.Close();
}
}
Скажешь потом заработало ли :)