Как изменять переменную во всех копиях скрипта?

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Как изменять переменную во всех копиях скрипта?

Сообщение Legion13 20 окт 2018, 21:56

Здравствуйте. У меня есть 2 кнопки. На обеих висит один и тот же скрипт. Если нажать на эти кнопки поочередно, то переменная со скрипта инициализируется несколько раз. Как сделать так, что бы переменная не инициализировалось по второму кругу, а изменялась везде? Сторона с PlayerPrefs не подходит.
Legion13
UNец
 
Сообщения: 2
Зарегистрирован: 20 окт 2018, 21:48

Re: Как изменять переменную во всех копиях скрипта?

Сообщение Friend123 21 окт 2018, 00:54

Из описания не понятно ничего! Код в студию.
Аватара пользователя
Friend123
Старожил
 
Сообщения: 701
Зарегистрирован: 26 фев 2012, 22:12
Откуда: Тверь
  • ICQ

Re: Как изменять переменную во всех копиях скрипта?

Сообщение Legion13 21 окт 2018, 12:45

Friend123 писал(а):Из описания не понятно ничего! Код в студию.

Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;

public class DropDown : MonoBehaviour, IPointerClickHandler, IPointerExitHandler
{
    public RectTransform container;
    public bool isOpen;
    public GameObject panel;
    public Button btn_deselect;

    public void OnPointerClick(PointerEventData eventData)
    {
        if (isOpen == true)
        {
            isOpen = false;
            //panel.gameObject.SetActive(false);
        }
        else if (isOpen == false)
        {
            isOpen = true;
            panel.gameObject.SetActive(true);
        }
    }

    public void OnPointerExit(PointerEventData eventData)
    {
        btn_deselect.OnDeselect(null);
        //isOpen = false;
    }

    // Use this for initialization
    void Start ()
    {
        container = transform.Find("ContainerLoadGame").GetComponent<RectTransform>();
        isOpen = false;
        }
       
        // Update is called once per frame
        void Update ()
    {
        Vector3 scale = container.localScale;
        scale.y = Mathf.Lerp(scale.y, isOpen ? 1 : 0, Time.deltaTime * 10);
        container.localScale = scale;
    }

    public void CloseAllMenus()
    {
        isOpen = false;
    }
}
 


Этот скрипт используется на 2 кнопки:
Скрытый текст:
Изображение
Изображение

Если я нажимаю на одну из этих кнопок, то переменная isOpen изменяется лишь на этой кнопке. Как сделать так, что бы и на второй изменялось вместе с первой?
Legion13
UNец
 
Сообщения: 2
Зарегистрирован: 20 окт 2018, 21:48

Re: Как изменять переменную во всех копиях скрипта?

Сообщение Cr0c 21 окт 2018, 13:09

Отделить визуал от логики - это самое первое.
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12