0 / 0 / 0
Регистрация: 13.12.2020
Сообщений: 13
1

Не отключаются скрипты на персонаже при вызове паузы. Конфликтуют скрипты

14.12.2020, 00:04. Показов 642. Ответов 10

Добрый вечер. Прошу помочь в проблеме.
В скриптах для инвентаря и паузы разместил метод, он практически не отличается (указан ниже).
Но почему метод работает только на инвентаре. При нажатии паузы игры, игра не останавливается, управление не отключается, курсор не появляется. Если отключить скрипт инвентаря, пауза начинает работать корректно.
В чём может быть проблема?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
    void ToggleInventory()
    {
        if (Input.GetKeyDown(showInventory))
        {
            isShowed = !isShowed;
        }
        if (isShowed)
        {
            cellContainer.SetActive(true);
            conCam.enabled = false;
            controller.enabled = false;
            Cursor.visible = true;
            Cursor.lockState = CursorLockMode.None;
        }
        else
        {
            cellContainer.SetActive(false);
            conCam.enabled = true;
            controller.enabled = true;
            Cursor.visible = false;
            Cursor.lockState = CursorLockMode.None;
        }
    }
Скрипт Паузы: 
private void Update()
    {
        if(Input.GetKeyDown(KeyCode.P))
        {
            if(GameIsPaused)
            {
                Resume();
            }
            else
            {
                Pause();
            }
        }
    }
    void Resume()
    {
        pauseMenuUI.SetActive(false);
        conCam1.enabled = true;
        controller1.enabled = true;
        Cursor.visible = false;
        Time.timeScale = 1;
        GameIsPaused = false;
        point.SetActive(true);
    }
    void Pause()
    {
        pauseMenuUI.SetActive(true);
        conCam1.enabled = false;
        controller1.enabled = false;
        Cursor.visible = true;
        Time.timeScale = 0;
        GameIsPaused = true;
        point.SetActive(false);
    }
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.12.2020, 00:04
Ответы с готовыми решениями:

Конфликтуют скрипты. Паузы игры и инвентарь
Добрый вечер. Конфликтуют скрипты паузы и инвентаря по остановке времени, появлении курсора и...

Конфликтуют JS скрипты
Добрый вечер. Стоит IPB, в нем есть уже JS библиотека (как я понял, какой-то фреймворк для работы...

Конфликтуют скрипты, вроде
Доброго всем времени суток, перейду сразу к проблеме. Есть скрипт, который создает табы:...

Скрипты, скрипты и еще раз скрипты
Всем привет. Продаю скрипты различных сайтов, а также занимаюсь реализацией ваших. На данный...

10
206 / 127 / 84
Регистрация: 22.07.2020
Сообщений: 434
14.12.2020, 01:21 2
Stanislav13S,
У вас на камере и на персонаже висит два скрипта? conCam и conCam1 на камере и controller и controller1 на персонаже? Или это закешированые переменные? Почему они дублируются?
0
0 / 0 / 0
Регистрация: 13.12.2020
Сообщений: 13
14.12.2020, 15:17  [ТС] 3
На персонаже пытаюсь отключить скрипт и на камере, которая на нём. По сути conCam и conCam1 обращаются к одним и тем же объектам. На персонаже два скрипта, контроллер и mouselook, на камере тот же скрипт mouse look. Пока с трудом соображаю как правильно обратиться к объекту.

Добавлено через 4 минуты
Я назвал переменные ConCam и СonCam1 так, что бы не обращаться к переменной из другого скрипта. Т.к. пока не умею нормально это делать.
0
206 / 127 / 84
Регистрация: 22.07.2020
Сообщений: 434
15.12.2020, 07:47 4
Stanislav13S,
У вас эти две переменные public или privat? Вы их получаете методом GameObject.Find или перетащили в едиторе?
0
0 / 0 / 0
Регистрация: 13.12.2020
Сообщений: 13
15.12.2020, 15:04  [ТС] 5
Объявляю public переменные и перетаскиваю в editor .
0
307 / 225 / 93
Регистрация: 05.04.2015
Сообщений: 1,046
15.12.2020, 15:19 6
Stanislav13S, Скорее всего и ошибки сыплютса в консоль?
0
0 / 0 / 0
Регистрация: 13.12.2020
Сообщений: 13
15.12.2020, 15:36  [ТС] 7
Нет ошибок, как ни странно.

Добавлено через 4 минуты
Убрал Time.timeScale с инвентаря. Эта функция работает теперь только на паузе. Но курсор так и не появляется при паузе.
Так они выглядит начало скрипта.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    [HideInInspector]
    public bool isPaused;
    [SerializeField]
    private KeyCode pauseButton;
    [SerializeField]
    private GameObject panelPause;
    [SerializeField]
    private GameObject player;
    [SerializeField]
    private MouseLook controller;
    [SerializeField]
    private MouseLook conCam;
    public GameObject point; 
    void Start()
    {
        panelPause.SetActive(false);
        conCam = player.transform.GetChild(2).GetComponent<MouseLook>();
        controller = player.GetComponent<MouseLook>();
Добавлено через 2 минуты
В инвентаре переменные без поля [SerializeField]
0
307 / 225 / 93
Регистрация: 05.04.2015
Сообщений: 1,046
15.12.2020, 16:00 8
Ну зайди в каждый объект да посмотри что там отключаетса а что нет
0
0 / 0 / 0
Регистрация: 13.12.2020
Сообщений: 13
15.12.2020, 16:03  [ТС] 9
Не отключается MouseLook, возможно курсор из за этого не показывается.

Добавлено через 1 минуту
При вызове инвентаря отключается. при паузе нет.
0
307 / 225 / 93
Регистрация: 05.04.2015
Сообщений: 1,046
15.12.2020, 16:07 10
Цитата Сообщение от Stanislav13S Посмотреть сообщение
При вызове инвентаря отключается. при паузе нет.
А должно быть?
0
0 / 0 / 0
Регистрация: 13.12.2020
Сообщений: 13
15.12.2020, 16:20  [ТС] 11
Да.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
        if (Input.GetKeyDown(pauseButton))
        {
            isPaused = !isPaused;
        }
        if (isPaused)
        {
            panelPause.SetActive(true);
            controller.enabled = false;
            conCam.enabled = false;
            Cursor.visible = true;
            Cursor.lockState = CursorLockMode.None;
            Time.timeScale = 0f;
            point.SetActive(false);
         }
        else
        {
            panelPause.SetActive(false);
            controller.enabled = true;
            conCam.enabled = true;
            Time.timeScale = 1f;
            point.SetActive(true);
        }
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.12.2020, 16:20

Как скрипты видят другие скрипты, которые были объявлены ранее?
Может кто-нибудь объяснить как реализовано то, что у нас скрипт, который был заинклуден в html...

Баннерные скрипты, скрипты посещаемости
Всем привет,хотелось бы узнать как организовать баннерную систему у себя на сайте,такую чтобы...

При кнопке назвд скрипты не выполняются
Добрый день, вот уже месяц не могу решить проблему прошу помогите кто в этом понимет. Объясняю...

Не подгружаются скрипты при перезапуске юнити
Привет, небольшая проблема: в скрипте типа EditorWindow объявляю класс, наследующий от...

Не подгружаются скрипты при обновлении страницы
Доброго времени суток! Периодически при обновлении страницы не подгружается документ с Jquery...

Не подключаются скрипты при посадке верстки на WP
Всем привет.В первый раз натягиваю верстку на wp и столкнулся с некоторыми трудностями.Во первых у...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.