Загрузка данных


using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using TMPro;
using UnityEngine;

public class Phone : MonoBehaviour
{
    [SerializeField] TextMeshProUGUI nameTmp;
    [SerializeField] TextMeshProUGUI commentTmp;
    [SerializeField] string modiferFile;
    [SerializeField] string tagFile;
    [SerializeField] string startPhrase;

    GetTheSettings gts;

    private void Awake()
    {
        gts = GameObject.FindGameObjectWithTag("Gts").GetComponent<GetTheSettings>();
        nameTmp.text = GenerateName(gts.Get().english);
        Modifer[] modifers = GetModifers();
        Modifer mod = modifers[UnityEngine.Random.Range(0, modifers.Length)];
        string[] maybeTags = GetTags(mod);
        commentTmp.text = startPhrase + maybeTags[UnityEngine.Random.Range(0, maybeTags.Length)];
    }
    private string GenerateName(bool english)
    {
        string name = "";
        string vowels;
        string consonants;

        if (english)
        {
            vowels = "AEIOUY";
            consonants = "BCDFGHJKLMNPQRSTVWXZ";
        }
        else
        {
            vowels = "АОУИЭЯЁЮЕ";
            consonants = "БВГДЖЗКЛМНПРСТФХЦЧШЩ";
        }

        for (int i = 0; i < UnityEngine.Random.Range(2, 3); i++)
        {
            char let1 = consonants[UnityEngine.Random.Range(0, consonants.Length)];
            char let2 = vowels[UnityEngine.Random.Range(0, vowels.Length)];
            name += let1;
            name += let2;
        }

        switch (UnityEngine.Random.Range(0, 3))
        {
            case 0:
                name = vowels[UnityEngine.Random.Range(0, vowels.Length)] + name;
                break;
            case 1:
                name += consonants[UnityEngine.Random.Range(0, consonants.Length)];
                break;
            default:
                break;
        }

        return name;
    }
    private Modifer[] GetModifers()
    {
        string[] lines = File.ReadAllLines(Path.Combine(Application.dataPath, $"{modiferFile}.json"));
        List<Modifer> mods = new List<Modifer>();

        foreach (string line in lines)
        {
            mods.Add(JsonUtility.FromJson<Modifer>(line));
        }

        return mods.ToArray();
    }
    //private string[] GetTags(Modifer mod)
    //{
    //    string[] lines = File.ReadAllLines(Path.Combine(Application.dataPath, $"{tagFile}.json"));
    //    List<string> tags = new List<string>();

    //    //string json = File.ReadAllText(Path.Combine(Application.dataPath, $"{tagFile}.json"));
    //    //TagList tagList = JsonUtility.FromJson<TagList>(json);
    //    //Debug.Log(json);

    //    //foreach (var tag in tagList.tags)
    //    //{
    //    //    //foreach (string desc in tag.descriptions)
    //    //    //{
    //    //    //    //Debug.Log(desc);
    //    //    //    tags.Add(desc);
    //    //    //}
    //    //    Debug.Log(tag);
    //    //}

    //    //foreach (byte tagN in mod.tags)
    //    //{
    //    //    if (tagN >= 0 && tagN < lines.Length)
    //    //    {
    //    //        string jsonLine = lines[tagN];

    //    //        // Отладка - выведите строку в консоль
    //    //        Debug.Log($"Пытаюсь десериализовать строку {tagN}: '{jsonLine}'");

    //    //        Tag tagObject = JsonUtility.FromJson<Tag>(jsonLine);
    //    //        if (tagObject != null && tagObject.descriptions != null)
    //    //        {
    //    //            foreach (string tag in tagObject.descriptions)
    //    //            {
    //    //                tags.Add(tag);
    //    //            }
    //    //        }
    //    //    }
    //    //}

    //    return tags.ToArray();
    //}
    private string[] GetTags(Modifer mod)
    {
        string[] lines = File.ReadAllLines(Path.Combine(Application.dataPath, $"{tagFile}.json"));
        List<string> tags = new List<string>();

        foreach (byte tagN in mod.tags)
        {
            Debug.Log(lines[tagN]);
            Tag tga = JsonUtility.FromJson<Tag>(lines[tagN]);
            foreach (string tag in tga.dscr)
            {
                tags.Add(tag);
            }
        }

        return tags.ToArray();
    }
}