Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Вопрос про заморозку игры Unity C#

Shnuk Ученик (182), на голосовании 1 месяц назад
Как ставить на паузу только во время выполнения этого скрипта?
У меня скрипт который открывает на "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;
}
}
}
}
Голосование за лучший ответ
Dark_Straylight Профи (749) 2 месяца назад
Что-бы пауза была во время скрипта нужно что-то сделать. Вот исправленный код:
 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, когда игра находится на паузе

}

}

}

}
ShnukУченик (182) 2 месяца назад
Спасибо большое, помогло
Dark_Straylight Профи (749) Всегда пожалуйста.))
Похожие вопросы