78 lines
3.1 KiB
C#
78 lines
3.1 KiB
C#
using UnityEngine;
|
||
using NavKeypad;
|
||
using TMPro;
|
||
|
||
public class PasswordManager : MonoBehaviour
|
||
{
|
||
[Header("Настройки пароля")]
|
||
public int passwordLength = 4; // Длина пароля (4 цифры)
|
||
public string correctPassword; // Здесь будет сгенерированный пароль (для keypad)
|
||
|
||
[Header("Записки")]
|
||
public GameObject notePrefab; // Prefab записки с TextMesh
|
||
public Transform[] noteSpawnPoints; // Массив точек спавна (укажите в инспекторе 4 позиции в сцене)
|
||
|
||
[Header("Ссылка на keypad")]
|
||
public Keypad keypadScript; // Ссылка на скрипт Keypad.cs (присвойте в инспекторе)
|
||
|
||
[Header("Настройки ориентации записок")]
|
||
[SerializeField] private Vector3 noteRotation = new Vector3(0f, 180f, 0f); // Вращение для коррекции текста
|
||
|
||
private void Start()
|
||
{
|
||
GeneratePassword();
|
||
SpawnNotes();
|
||
SetPasswordToKeypad();
|
||
}
|
||
|
||
private void GeneratePassword()
|
||
{
|
||
correctPassword = "";
|
||
for (int i = 0; i < passwordLength; i++)
|
||
{
|
||
int randomDigit = Random.Range(0, 10); // Случайная цифра от 0 до 9
|
||
correctPassword += randomDigit.ToString();
|
||
}
|
||
Debug.Log("Сгенерированный пароль: " + correctPassword); // Для теста, удалите в релизе
|
||
}
|
||
|
||
private void SpawnNotes()
|
||
{
|
||
if (noteSpawnPoints.Length != passwordLength)
|
||
{
|
||
Debug.LogError("Количество точек спавна должно быть равно длине пароля!");
|
||
return;
|
||
}
|
||
|
||
for (int i = 0; i < passwordLength; i++)
|
||
{
|
||
// Спавним записку с указанным вращением
|
||
GameObject note = Instantiate(notePrefab, noteSpawnPoints[i].position, Quaternion.Euler(noteRotation));
|
||
|
||
// Находим компонент TextMeshPro на записке или её детях
|
||
TextMeshPro textComponent = note.GetComponentInChildren<TextMeshPro>();
|
||
if (textComponent != null)
|
||
{
|
||
textComponent.text = $"{i + 1}: {correctPassword[i]}"; // Устанавливаем текст "1: X"
|
||
textComponent.enableWordWrapping = false; // Отключаем перенос слов для читаемости
|
||
textComponent.alignment = TextAlignmentOptions.Center; // Центрируем текст
|
||
}
|
||
else
|
||
{
|
||
Debug.LogError($"На prefab'е записки ({note.name}) нет компонента TextMeshPro!");
|
||
}
|
||
}
|
||
}
|
||
|
||
private void SetPasswordToKeypad()
|
||
{
|
||
if (keypadScript != null)
|
||
{
|
||
keypadScript.keypadCombo = int.Parse(correctPassword); // Устанавливаем пароль как int
|
||
}
|
||
else
|
||
{
|
||
Debug.LogError("Ссылка на Keypad не присвоена!");
|
||
}
|
||
}
|
||
} |