danilaxxl danilaxxl

CollectableItemData.cs

[CreateMenuItem(fileName = "newItem", menuName = "Data/Items/Collectable", order = 51]

GoloGames GoloGames

vadya_ivan, рад, что вам игра показалась интересной : )

P.S. Кстати уже доступна бесплатная демо-версия в Steam

vadya_ivan vadya_ivan

Визуал, задумка, музыка , механики, все в цель

GoloGames GoloGames

Ato_Ome, спасибо за позитивные эмоции, будем стараться : )

Ato_Ome Ato_Ome

Потрясающий результат, все так четенько, плавненько)
То ли саунд, то ли плавность напомнили мне игрушку World of Goo, удачи вам в разработке и сил побольше дойти до релиза!)

Cute Fox Cute Fox

Graphics are a little cool, good HD content. But this game doesn't cause nary interest me.
However the game is well done.

GMSD3D GMSD3D

Почему действие после всех условий выполняется?
[step another object]

Zemlaynin Zemlaynin

Jusper, Везде, но наугад строить смысла нет. Нужно разведать сперва территорию на наличие ресурсов.

Jusper Jusper

Zemlaynin, а карьеры можно будет везде запихать?
Или под них "особые" зоны будут?

Zemlaynin Zemlaynin

Это так скажем тестовое строительство, а так да у города будет зона влияния которую нужно будет расширять.

Jusper Jusper

А ссылка есть?

Jusper Jusper

Я не оч понял из скриншота, как вообще работает стройка. У игрока будет как бы поле строительства?

split97 split97

в игру нужно добавить время песочные часы в инвентаре, пока бегаешь наберается усталость и ты очень тормозной мобильный враг просто убевает

split97 split97

в игру нужно добавить время песочные часы в инвентаре, пока бегаешь наберается усталость и ты очень тормозной мобильный враг просто убевает

ViktorJaguar ViktorJaguar

Почему я нигде не могу найти нормальный туториал, где покажут как экипировать предмет (например, меч) в определенную (выделенную под оружие) ячейку???

Логотип проекта 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

-

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