TheDarkestRed TheDarkestRed

Местные жители используют синие кристаллы для создания защитных полей вокруг своих домов 🎮🏠💎

...
Hisus Hisus

А ничего что количество аргументов в делегатах разное и оверрайднуть нельзя из-за этого?

TheDarkestRed TheDarkestRed

Механика парирования 🎮 🤺

...
ruggaraxe ruggaraxe

Mr_Fog, Спасибо) осенью планируем выпустить новую демку)

Mr_Fog Mr_Fog

Игра просто супер!!! Спасибо большое за столь интересный и не обычный проект.

alexrybalkin alexrybalkin

Делаем с командой игру.
В этой сцене мы впервые сталкиваемся с потусторонними силами.

TheDarkestRed TheDarkestRed

Cоздаём новое освещение и цветовой схему 🎮👩‍🎨🌓
https://the-darkest-red.xsollasitebuilder.com

TheDarkestRed TheDarkestRed

Линейка новых скриншотов The Darkest Red 🎮🤺💥🧟🔥

DuCats Games DuCats Games

Jusper, Привет!
Так она же давно в релизе уже больше года)

Jusper Jusper

DuCats Games, а что случилось с Action RPG?

Jusper Jusper

И артово и интерфейсно игруха стала выглядеть намного круче!

win20082007 win20082007

Приветствую друзья! На этой неделе учился смешивать материалы на враге для правильной работы умения невидимости.

TheDarkestRed TheDarkestRed

Бой в шкуре врага 🎮🧟🤺

TheDarkestRed TheDarkestRed

Два способа решить одну задачу 🎮🧟🔥💥
https://vk.com/the_darkestred

alexprey alexprey

О да, "Всем привет, диск сгорел, игра не выйдет" прям классика!

Пустил ностальгирующую слезу, сам через это все прошел, хоть и не выпустил ни одной игры

TheDarkestRed TheDarkestRed

Используй врага, чтобы открыть ворота 🎮 🥶 🧟

TheDarkestRed TheDarkestRed

Тренируем нового монстра 🎮🤺🧟
https://vk.com/the_darkestred

alexprey alexprey

Jusper, ну обычно целая война вокруг этого разворачивается

Логотип проекта Unity

Unity - SaveSystem Json

Всем привет. Заболел коронавирусом и сижу дома, балдею, наконец-то появилось время потыкать Юнити палкой.

Но ближе к делу: пытаюсь сделать сохранение 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 в скрипте обратно, и о чудо оно работает как должно и так.

Я понимаю, что дебильно объяснил, потому что новичок и не знаком с терминологией, но я хотел бы узнать почему так получилось и мб есть ли какие-то грубые косяки со стороны кода?

Ответ

Посмотрел видео, посмотрел pastebin с кодом.
В обоих случаях переменные CheckAge и CheckName публичные и доступ через событие кнопки On End Edit получается без лишних костылей.

Прятать переменную в private не получится, потому что компилятор начнет ругаться, что к ней никто не обращается.

Смотрите также:


Комментарии



Брось ссылкой в оригинальную статью, по которой работаешь.

Jusper,

Брось ссылкой в оригинальную статью, по которой работаешь.

Посмотрел видео, посмотрел pastebin с кодом.
В обоих случаях переменные CheckAge и CheckName публичные и доступ через событие кнопки On End Edit получается без лишних костылей.

Прятать переменную в private не получится, потому что компилятор начнет ругаться, что к ней никто не обращается.

Поменяй сейчас все обратно на public и покажи мне как у тебя сделаны настройки на Input Field.

Действительно. Я наверное поехал просто и в глаза долблюсь.

ты про это?

Diabfall,

ты про это?

Да. Все заработало?

Jusper,

Diabfall,

ты про это?

Да. Все заработало?

Да. Спасибо.
А можешь подсказать статью про перенос данных между сценами? Я сам кучу всяких вариантов нарыл типа через префабы, статическую переменную, какие-то объекты, которые висят во всех сценах. Ну или способ реализации в 2-х словах, статью я сам найду.

Diabfall,

Ну или способ реализации в 2-х словах, статью я сам найду.

Взгляни на следующие способы:

  • Static переменные (жует int, bool, string, float, double)
  • Save/Load (в префсы, в жсон). Берешь то, что ты уже сделал в примере и пробуешь загрузить в другой сцене через класс DataSaver

-

Возможность добавлять комментарии была ограничена