Что-бы пауза была во время скрипта нужно что-то сделать. Вот исправленный код:
csharp
Copy code
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ReadNote : MonoBehaviour
{
public int DistanseRay;
[SerializeField]
public GameObject note;
private bool isPaused = false; // Флаг, указывающий, находится ли игра на паузе
private void Start()
{
note.SetActive(false);
}
private void Update()
{
if (!isPaused) // Проверяем, не находится ли игра на паузе
{
if (Input.GetKeyDown(KeyCode.E))
{
ReadNotes();
}
}
if (Input.GetKeyDown(KeyCode.Mouse0))
{
if (isPaused) // Проверяем, находится ли игра на паузе
{
note.SetActive(false);
Time.timeScale = 1;
isPaused = false; // Устанавливаем флаг обратно в false, когда игра возобновляется
}
}
}
public void ReadNotes()
{
Ray ray = Camera.main.ScreenPointToRay(new Vector2(Screen.width / 2, Screen.height / 2));
RaycastHit hit;
if (Physics.Raycast(ray, out hit, DistanseRay))
{
if (hit.collider.GetComponent())
{
note.SetActive(true);
Time.timeScale = 0;
isPaused = true; // Устанавливаем флаг в true, когда игра находится на паузе
}
}
}
}
У меня скрипт который открывает на "E" записку и ставит игру на паузу, после закрытия по нажатию на Mouse(0) он возобновляет игру и убирает с паузы, но даже если я не нажимаю на записку, но нажимаю на Mouse(0) в любом месте все равно происходит действие с паузой, он пытается убрать и так убранную с паузы игру, как сделать эти действия только в пределах скрипта?
Вот скрипт:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ReadNote : MonoBehaviour
{
public int DistanseRay;
[SerializeField]
public GameObject note;
[SerializeField]
private void Start()
{
note.SetActive(false);
}
private void Update()
{
{
if (Input.GetKeyDown(KeyCode.E))
{
ReadNotes();
}
if (Input.GetKeyDown(KeyCode.Mouse0))
{
note.SetActive(false);
Time.timeScale = 1;
}
}
}
public void ReadNotes()
{
Ray ray = Camera.main.ScreenPointToRay(new Vector2(Screen.width / 2, Screen.height / 2));
RaycastHit hit;
if (Physics.Raycast(ray, out hit, DistanseRay))
{
if (hit.collider.GetComponent<Note>())
{
note.SetActive(true);
Time.timeScale = 0;
}
}
}
}