- Home /
changing from mouse click to keys
hey i have a pause script that allows me to save the game etc, but my fps uses mouse lock which is ok, but when i pause the game i cant click on any of the menus, i did that unlock mouse script but i still have issues so was wondering how do i make it so this scrip navagates via the arrow keys instead of the mouse postions
the script it
 using UnityEngine;
 using System;
 
 public class TestGUI : MonoBehaviour 
 {
     public static TestGUI Instance;
     public delegate void GUIState();
     public GUIState CurrentState;
     
     public GUIStyle ButtonStyle = new GUIStyle();
     
     private bool _ingame;
 
     private Vector2 _scrollViewVector = Vector2.zero;
 
     private string[] _selStrings;
     private string _saveFileInfoText;
 
     private int _selectedSaveIndex;
     private int _amountOfElements;
 
     private bool _showDeletePrompt;
     private bool _showOverwritePrompt;
     private bool _showSavingPrompt;
     private bool _showNewSaveWindow;
 
     private string _newSaveName = "";
 
     private string _menuOption;
 
     private bool _refreshSavesList;
 
     public SaveFileInfo[] Saves;
 
     private string _errorMessage;
 
 
     private GUIStyle _textStyle;
     private bool _showSaveCompletedText;
     private DateTime _startTime;
     private DateTime _endTime;
 
     void Awake()
     {
         if (Instance != null && Instance != this)
         {
             Destroy(gameObject);
             return;
         }
 
         Instance = this;
         
         _textStyle = new GUIStyle { fontSize = 26, normal = { textColor = Color.white } };
 
         DontDestroyOnLoad(gameObject);
 
         UniSave.OnLoadingFailed += UniSave_OnLoadingFailed;
         UniSave.OnSavingCompleted += UniSave_OnSavingCompleted;
     }
 
 
     void Start () 
     {
         if (Application.loadedLevelName == "MainMenu")
         {
             CurrentState = MainMenu;
         }
             
         else
         {
             CurrentState = InGame;
         }
     }
     
     void Update () 
     {
         if (_ingame && CurrentState != MainMenu && CurrentState != ErrorPrompt  && Input.GetKeyDown(KeyCode.Escape))
         {
             CurrentState = MainMenu;
         }
     }
     
     private void InGame()
     {
         _ingame = true;
 
         var mouseLook = FindObjectsOfType(typeof(MouseLook));
 
         foreach (MouseLook comp in mouseLook)
         {
             comp.enabled = true;
         }
     }
     
     private void NotInGame()
     {
         _ingame = false;
         CurrentState = MainMenu;
     }
     
     private void MainMenu()
     {
         GUI.BeginGroup(new Rect(Screen.width / 2 - 150, Screen.height / 2 - 50, 320, 425));
 
         if (!_ingame)
         {
             if (GUI.Button(new Rect(0, 0, 200, 25), "New Game"))
             {
                 Application.LoadLevel("TestLevel");
                 CurrentState = InGame;
             }
             
             if (GUI.Button(new Rect(0, 35, 200, 25), "Load Game"))
             {
                 _menuOption = "Load";
                 _refreshSavesList = true;
                 CurrentState = LoadSaveMenu;
             }
             
             if (GUI.Button(new Rect(0, 70, 200, 25), "Quit"))
             {
                 Application.Quit();
             }
         }
 
         else
         {
             var mouseLook = FindObjectsOfType(typeof(MouseLook));
 
             foreach (MouseLook comp in mouseLook)
             {
                 comp.enabled = false;
             }
 
             if (GUI.Button(new Rect(0, 0, 200, 25), "Back to Game"))
             {
                 CurrentState = InGame;
             }
 
             if (GUI.Button(new Rect(0, 35, 200, 25), "Save Game"))
             {
                 _menuOption = "Save";
                 _refreshSavesList = true;
                 CurrentState = LoadSaveMenu;
             }
 
             if (GUI.Button(new Rect(0, 70, 200, 25), "Load Game"))
             {
                 _menuOption = "Load";
                 _refreshSavesList = true;
                 CurrentState = LoadSaveMenu;
             }
 
             if (GUI.Button(new Rect(0, 105, 200, 25), "Quit to Main Menu"))
             {
                 Application.LoadLevel("MainMenu");
                 CurrentState = NotInGame;
             }
         }
 
         GUI.EndGroup();
     }
     
     private void LoadSaveMenu()
     {
         if (_refreshSavesList)
         {
             Saves = UniSave.GetSaves();
             _refreshSavesList = false;
         }
 
         int count = Saves.Length;
         int i = 0;
 
         _selStrings = new string[count];
 
         if (Saves.Length > 0)
         {
            _saveFileInfoText = Environment.NewLine + Saves[_selectedSaveIndex].Name + Environment.NewLine +
                                Saves[_selectedSaveIndex].LevelName + Environment.NewLine +
                                Saves[_selectedSaveIndex].Date;
         }
 
         else
         {
             _saveFileInfoText = "";
         }
 
         GUI.BeginGroup(new Rect(Screen.width / 2 - 150, Screen.height / 2 - 297, 300, 75));
         GUI.Box(new Rect(0, 0, 300, 75), _saveFileInfoText);
         GUI.EndGroup();
 
         GUI.BeginGroup(new Rect(Screen.width / 2 - 150, Screen.height / 2 - 212, 320, 425));
 
         GUI.Box(new Rect(0, 0, 300, 370), "");
 
         _scrollViewVector = GUI.BeginScrollView(new Rect(0, 10, 320, 350), _scrollViewVector, new Rect(0, 0, 300, 360 + ((_amountOfElements - 5) * 70)), false, false);
 
         _amountOfElements = 0;
 
         foreach (SaveFileInfo save in Saves)
         {
             _selStrings[i] = Environment.NewLine + save.Name + Environment.NewLine + Environment.NewLine;
 
             _amountOfElements++;
 
             i++;
         }
         
         GUILayout.BeginArea(new Rect(10, 0, 280, 350 + ((_amountOfElements - 5) * 70)));
         _selectedSaveIndex = GUILayout.SelectionGrid(_selectedSaveIndex, _selStrings, 1);
         GUILayout.EndArea();
         
         GUI.EndScrollView();
 
         if (_menuOption == "Load")
         {
             if (GUI.Button(new Rect(0, 400, 75, 25), "Load"))
             {
                 if (Saves.Length > 0)
                 {
                     UniSave.Load(Saves[_selectedSaveIndex].Name);
                     CurrentState = InGame;
                 }
             }
 
             if (GUI.Button(new Rect(300 - 75, 400, 75, 25), "Delete"))
             {
                 if (Saves.Length > 0)
                 {
                     if (!_showDeletePrompt)
                     {
                         _showDeletePrompt = true;
                     }
                 }
             }
         }
 
         if (_showDeletePrompt)
         {
             GUILayout.Window(0, new Rect(Screen.width / 2 - (250 + 500), Screen.height / 2 - 100, 500, 200), DeletePrompt, "Are you sure you want to delete \"" + Saves[_selectedSaveIndex].Name + "\"?");
         }
 
         else if (_menuOption == "Save")
         {
             if (GUI.Button(new Rect(0, 400, 75, 25), "New Save"))
             {
                 if (!_showNewSaveWindow)
                 {
                     _showNewSaveWindow = true;
                 }
             }
 
             if (GUI.Button(new Rect(300 - 75, 400, 75, 25), "Overwrite"))
             {
                 if (Saves.Length > 0)
                 {
                     if (!_showOverwritePrompt)
                     {
                         _showOverwritePrompt = true;
                     }
                 }
             }
         }
 
         if (_showNewSaveWindow)
         {
             _showOverwritePrompt = false;
             GUILayout.Window(0, new Rect(Screen.width / 2 - (250 + 500), Screen.height / 2 - 100, 500, 200), NewSaveWindow, "");
         }
 
         if (_showOverwritePrompt)
         {
             _showNewSaveWindow = false;
             GUILayout.Window(0, new Rect(Screen.width / 2 - (250 + 500), Screen.height / 2 - 100, 500, 200), OverwriteWindow, "Are you sure you want to overwrite \"" + Saves[_selectedSaveIndex].Name + "\"?");
         }
 
         GUI.EndGroup();
 
         if (GUI.Button(new Rect(Screen.width / 2 - 50, Screen.height / 2 + (212.5f + 20), 75, 25), "Back"))
         {
             CurrentState = MainMenu;
         }
     }
 
     private void DeletePrompt(int windowID)
     {
         if (GUILayout.Button("Yes"))
         {
             UniSave.Delete(Saves[_selectedSaveIndex].Name);
 
             if (_selectedSaveIndex > 0)
             {
                 _selectedSaveIndex -= 1;
             }
 
             _refreshSavesList = true;
             _showDeletePrompt = false;
         }
 
         else if (GUILayout.Button("No"))
         {
             _showDeletePrompt = false;
         }
     }
 
     private void OverwriteWindow(int windowID)
     {
         if (GUILayout.Button("Yes"))
         {
             UniSave.Save(Saves[_selectedSaveIndex].Name);
             _showOverwritePrompt = false;
         }
 
         else if (GUILayout.Button("No"))
         {
             _showOverwritePrompt = false;
         }
     }
 
     private void NewSaveWindow(int windowID)
     {
         _newSaveName = GUILayout.TextField(_newSaveName, 200);
 
         if (GUILayout.Button("Save"))
         {
             if (!String.IsNullOrEmpty(_newSaveName))
             {
                 UniSave.Save(_newSaveName);
                 _newSaveName = "";
                 _showNewSaveWindow = false;
                 //_showSavingPrompt = true;
             }
         }
 
         if (GUILayout.Button("Cancel"))
         {
             _showNewSaveWindow = false;
         }
     }
 
     private void ErrorPrompt()
     {
         GUI.Box(new Rect(0, Screen.height / 2 - 100, Screen.width, 50), "Loading failed:" + Environment.NewLine + _errorMessage);
 
         if (GUI.Button(new Rect(Screen.width / 2 - 50, Screen.height / 2 + 75, 100, 50), "Back"))
         {
             Destroy(Loading.Instance.gameObject);
             Application.LoadLevel("Menu");
             _ingame = false;
             CurrentState = MainMenu;
         }
     }
     
     void OnGUI()
     {
         GUI.skin.button = ButtonStyle;
     
         CurrentState();
 
         while (UniSave.IsSaving)
         {
             GUI.Label(new Rect(Screen.width / 2 - 50, Screen.height / 2 - 20, 100, 40), "Saving...", _textStyle);
         }
 
         if (_showSaveCompletedText)
         {
             TimeSpan duration = DateTime.Now - _startTime;
 
             if (duration.Seconds < 4)
             {
                 GUI.Label(new Rect(Screen.width / 2 - 75, Screen.height / 2 - 20, 150, 40), "Game Saved", _textStyle);
                 _refreshSavesList = true;
             }
 
             else
             {
                 _showSaveCompletedText = false;
             }
         }
     }
 
     private void UniSave_OnLoadingFailed(Exception exception)
     {
         _errorMessage = exception.Message;
         CurrentState = ErrorPrompt;
     }
 
     private void UniSave_OnSavingCompleted()
     {
         _startTime = DateTime.Now;
         _showSaveCompletedText = true;
     }
 }
 
               Comment
              
 
               
              Your answer
 
 
              koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                