Отключение иконки и клавиши Esc

110
12 августа 2019, 14:10

Есть персонаж, который в сцене №3 берёт предмет «рычаг» (необходимый в сцене №1), на котором висит скрипт «LeverUpSave».

    public class LeverUpSave : MonoBehaviour 
    {
    bool pickedUp;
    public GameObject TextLeverUp;   //иконка "рычага"

    void Start()
    {
        if (pickedUp = SaveSystem.GetBool("bool") == true)
        {
            TextLeverUp.SetActive (true);       
        }
        else
        {
            TextLeverUp.SetActive (false);          
        }
    }
    void OnTriggerEnter (Collider other)
    {
        if (other.gameObject.tag == "Player")
        {
            pickedUp = true;
            SaveSystem.SetBool("bool", pickedUp);
            AudioManager.Instance.PlayAudio("Key_Lever");
            TextLeverUp.SetActive (true);           
            Destroy(gameObject, 0.5f);            
        }
       }      
      }

В следствии чего активируется иконка «рычага», данное событие сохраняется, и префаб «рычага» уничтожается. В сценах №1-2 также есть иконки «рычага» и «менеджер рычага»)) со скриптом «LeverTextGO»,

public class LeverTextGO : MonoBehaviour 
{
bool pickedUp;
bool turnOn;    
public GameObject TextLeverUp;  
void Start()   
{
    if ((turnOn = SaveSystem.GetBool("bool") == true) || (pickedUp = SaveSystem.GetBool("bool") == false))
    {
        TextLeverUp.SetActive (false);
    }
    if (pickedUp = SaveSystem.GetBool("bool") == true)
    {
        TextLeverUp.SetActive (true);       
    }
   }
  }

благодаря которому, если персонаж взял рычаг, то иконка активна, а после того, как донёс до места и положил куда надо – должна отключаться. В сцене №1 есть триггер (точнее два, первый активирует надпись, что тут, мол, нужен «рычаг») со скриптом «LeverTurnOn»

    public class LeverTurnOn : MonoBehaviour 
    {
    bool pickedUp;
    bool turnOn;
    bool isGameOver;
    public GameObject TextKeyUp; // иконка рычага
    public GameObject TriggTextLever;  // старое сообщение на UI о рычаге
    public GameObject TriggLever;  // старый триггер на рычаге
    public GameObject Lever_GO;  // старый агрегат "рычаг"
    public GameObject LeverN_GO;  // новый агрегат "рычаг"
    public GameObject PanelFin;  // панель на UI о завершении игры
    public GameObject PausePenel;

    void OnTriggerEnter (Collider other)
    {
        if (other.gameObject.tag == "Player")
        {
            if (pickedUp = SaveSystem.GetBool("bool") == true)
            {
                AudioManager.Instance.PlayAudio("Key_Lever");
                TextKeyUp.SetActive (false);
                TriggLever.SetActive (false);
                Lever_GO.SetActive(false);
                TriggTextLever.SetActive (false);               
                LeverN_GO.SetActive (true);
                turnOn = true;
                pickedUp = false;
                SaveSystem.SetBool("bool", turnOn);
                SaveSystem.SaveToDisk();
                Debug.Log("Save leverUp to disk.");
            }
            if (pickedUp = SaveSystem.GetBool("bool") == false)
            {
                Lever_GO.SetActive(true);
                TriggTextLever.SetActive(true);
                LeverN_GO.SetActive(false);
            }           
        }
    }
        void OnTriggerExit(Collider other)
        {
            if (other.gameObject.tag == "Player")
            {
                if (pickedUp = SaveSystem.GetBool("bool") == true)
                {
                    PausePenel.SetActive(false);
                    PanelFin.SetActive (true);
                    isGameOver = true;
                    Cursor.visible = true;
                    Time.timeScale = 0;
                    AudioManager.Instance.PlayAudio("PanelFinSound");               
                }
                if (pickedUp = SaveSystem.GetBool("bool") == false)
                {
                    PanelFin.SetActive (false);
                }    
              }
            }     
          }
  • который отключает первый триггер, отключает иконку, активирует принесённый рычаг, сохраняет это событие, а на выходе из триггера – активирует UI панель «PanelFin», с кнопками «Quit» и «Menu». Первая проблема в том, что, если перезайти в сцену 1 или 2, то иконка «рычага» опять активна – но я уже положил рычаг на место и она должна появиться (по задумке), только если я снова возьму рычаг в сцене №3. А вторая проблема в том, что я не знаю, как правильно отключить кнопку Esc (которой управляет скрипт «SumPause»), на момент активации панели «PanelFin» с кнопками «Quit» и «Menu».

    using UnityEngine;
    using UnityEngine.UI;
    [RequireComponent(typeof(Image))]
    /// <summary>Singleton class for controlling pause functions.</summary>
    public class SumPause : MonoBehaviour {
    // Event managers
    public delegate void PauseAction(bool paused);
    public static event PauseAction pauseEvent;
    public bool isGameOver;
    // Variables set via inspector
    [SerializeField]
    bool useEvent = false, detectEscapeKey = true;
    [SerializeField]
    Sprite pausedSprite, playingSprite;
    // Link to button's image
    Image image;
    static bool status = false;
    /// <summary>
    /// Sets/Returns current pause state (true for paused, false for normal)
    /// </summary>
    public static bool Status {
        get { return status; }
        set {
            status = value;
            Debug.Log("Pause status set to " + status.ToString());
            OnChange();
            // Change image to the proper sprite if everything is set
            if (CheckLinks())
                instance.image.sprite = status ? instance.pausedSprite : instance.playingSprite;
            else
                Debug.LogError("Links missing on SumPause component. Please check the sumPauseButton object for missing references.");
            // Notify other objects of change
            if (instance.useEvent && pauseEvent != null)
                pauseEvent(status);               
        }
    }
    // Instance used for singleton
    public static SumPause instance;
    void Awake ()
    {
        image = GetComponent<Image>();
    }
    void Start () 
    {        
        // Ensure singleton
        if (SumPause.instance == null)
            SumPause.instance = this;
        else
            Destroy(this);
    }
    void Update() 
    {
        // Listen for escape key and pause if needed
        if (detectEscapeKey && Input.GetKeyDown(KeyCode.Escape))
         TogglePause();           
    }
    /// <summary>
    /// Flips the current pause status. Called from the attached button in 
    /// the inspector.
    /// </summary>
    public void TogglePause () 
    {
        Status = !Status; // Flip current status
    }
    /// <summary>Checks if all links are properly connected</summary>
    /// <returns>False means links are missing</returns>
    static bool CheckLinks () {
        return (instance.image != null && instance.playingSprite != null && instance.pausedSprite != null);
    }
    /// <summary>This is what we want to do when the game is paused or unpaused.</summary>
    static void OnChange() {
        if(status) {
            // What to do when paused
            Time.timeScale = 0; // Set game speed to 0
            Cursor.visible = true;
        }
        else {
            // What to do when unpaused
            Time.timeScale = 1; // Resume normal game speed
            Cursor.visible = false;
        }
      }
    }
    
READ ALSO
Ошибка Failed to create a assets.ap_package компиляции

Ошибка Failed to create a assets.ap_package компиляции

При компиляции файла выдает ошибку: Failed to create a assetsap_package See the Console for details

131
Ошибка при публикации SQL CRL из Visual Studio

Ошибка при публикации SQL CRL из Visual Studio

Делаю сборку CRL для SQLНеобходимо чтобы она была в режиме UNSAFE

100
Перевести числа

Перевести числа

У меня есть число допустим 12865 мне нужно его перевести в 12,865Тоесть если число больше тысячи переводить его в такой формат, но если число меньше...

131
Вывести текст из ComboBox в Excel

Вывести текст из ComboBox в Excel

не получается сделать, что бы текст находящийся в ComboBox выводился в Excel, подскажите что ещё мне нужно в код добавить? У меня получается, что:...

79