Всем привет. Заболел коронавирусом и сижу дома, балдею, наконец-то появилось время потыкать Юнити палкой.
Но ближе к делу: пытаюсь сделать сохранение 2 вводимых в строку переменных (name, age).
В интернетах прочитал про метод c json, и по примеру получилось это:
using System.Collections;
using System.Collections.Generic;
using System;
using System.IO;
using UnityEngine;
public class SaveSystem : MonoBehaviour
{
public GameObject nameP;
private Save sv = new Save();
private string path; //Путь сохранения
private void Start()
{
path = Path.Combine(Application.dataPath, "Save.json");
if (File.Exists(path))
{
sv = JsonUtility.FromJson<Save>(File.ReadAllText(path));
Debug.Log("Hello MY CaMRAD " + sv.name + "age " + sv.age);
}
else nameP.SetActive(true);
}
private void CheckName(string name)
{
if (!string.IsNullOrEmpty(name) && name.Length >= 3)
{
sv.name = name;
Debug.Log("Ваше имя: " + name);
}
else Debug.Log("CaMRAD 4TO ZA DELA VVEDI нормальное имя");
}
private void CheckAge(string age)
{
if (!string.IsNullOrEmpty(age) && age.Length > 0)
{
sv.age = int.Parse(age);
Debug.Log("Ваш возраст: " + age);
}
else Debug.Log("CaMRAD 4TO ZA DELA VVEDI нормальный возраст");
}
private void OnApplicationQuit()
{
File.WriteAllText(path, JsonUtility.ToJson(sv));
}
}
[Serializable]
public class Save
{
public string name;
public int age;
}
В примере автор добавляет скрипт к майн камере, а потом эту майн камеру через On End Edit (String) вешает на Input поле, где выбирает SaveSystem -> Dinamic String -> CheckName (и CheckAge).
У меня так и не получилось выйти на CheckName (и ChaechAge), хотел написать я, но пока писал данный текст я решил эту проблему, но через какой-то костыль. Я поменял
private void CheckName(string name)
на
public void CheckName(string name)
и вот неожиданность теперь можно получить доступ к CheckName для
В примере автор добавляет скрипт к майн камере, а потом эту майн камеру через On End Edit (String) вешает на Input поле, где выбирает SaveSystem -> Dinamic String -> CheckName (и CheckAge).
Потом я меняю public на private в скрипте обратно, и о чудо оно работает как должно и так.
Я понимаю, что дебильно объяснил, потому что новичок и не знаком с терминологией, но я хотел бы узнать почему так получилось и мб есть ли какие-то грубые косяки со стороны кода?
Ответ
Смотрите также:
Комментарии
Брось ссылкой в оригинальную статью, по которой работаешь.
Поменяй сейчас все обратно на public и покажи мне как у тебя сделаны настройки на Input Field.
Действительно. Я наверное поехал просто и в глаза долблюсь.
ты про это?
Да. Все заработало?
Да. Спасибо.
А можешь подсказать статью про перенос данных между сценами? Я сам кучу всяких вариантов нарыл типа через префабы, статическую переменную, какие-то объекты, которые висят во всех сценах. Ну или способ реализации в 2-х словах, статью я сам найду.
Ну или способ реализации в 2-х словах, статью я сам найду.
Взгляни на следующие способы:
- Static переменные (жует int, bool, string, float, double)
- Save/Load (в префсы, в жсон). Берешь то, что ты уже сделал в примере и пробуешь загрузить в другой сцене через класс DataSaver
-
Возможность добавлять комментарии была ограничена




<a href= http://mosros.flybb.ru/viewtopic.php?f=2&t=635>Процесс получения диплома стоматолога: реально ли это сделать быстро?</a>