Jusper Jusper

Diabfall,

Да, можно.

Diabfall Diabfall

Jusper, спасибо. Еще короткий вопрос: можно же как-то отследить нажатие на коллайдер и то на какой именно коллайдер было совершено нажатие? Если ответ - да и да, то можешь закрывать тему.

Jusper Jusper

Вот один из примеров: https://habr.com/ru/post/472770/

Jusper Jusper

Делаешь UI менеджер и делаешь конфиг рыцарей. Когда игрок нажимает на рыцаря, UI менеджер ловит это через Listener, дергает его параметры и передает в окно. Окно при появлении делает update данных и отрисовывает результат...

...
Diabfall Diabfall

Jusper, смотри, что я хочу сделать. У меня будет таблица (панель) со списком "рыцарей". При нажатии на любого рыцаря из списка будет открываться отдельная панель с его параметрами. При этом число рыцарей мб рандомным...

...
Jusper Jusper

Вариантов не так много.
Либо ты делаешь через событие нажатия On Click, либо делаешь менеджер UI, который будет обрабатывать нажатие конкретной кнопки (а ее тоже надо будет определить) и set active для назначенного объекта...

Diabfall Diabfall

У меня есть одинаковые панельки. Когда я нажимаю уcловно button "Quests", выводится панелька "Quests", а все другие панельки закрываются. Ну и с другими панельками аналогично.
Мне просто показалось, что через On Click ...

Jusper Jusper

Давай конкретнее кейс.
У тебя есть панельки, когда ты нажимаешь на кнопку панелька открывается/появляется. Так?

Jusper Jusper

Diabfall,

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

  • Static переменные (жует int, bool, string, float, double)
  • ...
Diabfall Diabfall

Jusper,

Да. Спасибо.

Jusper Jusper

Diabfall,

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

Diabfall Diabfall

ты про это?

Diabfall Diabfall

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

Jusper Jusper

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

Jusper Jusper

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

...
Jusper Jusper

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

Jusper Jusper

Ato_Ome,

Слушай, а вполне себе ок получается.

TheDarkestRed TheDarkestRed

Более естественное освещение для The Darkest Red 🎮 🌘 🤺
https://vk.com/the_darkestred

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

-

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