Загрузка данных
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();
}
}