- Home /
 
JavaScript OnGUI GuiSkins aren't working, multiple scripts
Hi guys, i'm having a major problem, i just got a GUI Skin made for my game, it looks awesome, i have multiple scripts that i wan't to apply this skin to. One of them is a Pause menu, another Inventory, and some more. When i try to apply this skin, i get this error:
Assets/Scripts/Inventory.js(44,18): BCE0022: Cannot convert 'UnityEngine.GUISkin[]' to 'UnityEngine.GUISkin'.
Here's my Inventory script:
 #pragma strict
 
 var InventoryEnabled = false;
 
 
 var InvWindow : Texture;
 var InvClose : Texture;
 var Grids : Texture[];
 var SideBar : Texture[];
 var IlluminatiSkin : GUISkin[];
 
 private var GridValue : float = -1;
 
 function Update(){
 
     
     if(Input.GetKeyDown("c")){
     
             
         if(InventoryEnabled == true){
             
             InventoryEnabled = false;
             Time.timeScale = 1;
             AudioListener.volume = 1;
             Screen.showCursor = false;    
             GetComponent(MouseLook).enabled = true;
                         
         }
         
         
         else if(InventoryEnabled == false){
             InventoryEnabled = true;
             AudioListener.volume = 0;
             Time.timeScale = 0;
             Screen.showCursor = true;
             GetComponent(MouseLook).enabled = false;
             
         }
     }
 }
 
 function OnGUI ()
 {
      GUI.skin =  IlluminatiSkin;
 
     if(InventoryEnabled == true)
     {
         GUI.Box(Rect(Screen.width /2 - 280,Screen.height /2 -280 ,650,500), InvWindow);
         
         //Grid
         GridValue = GUI.SelectionGrid(Rect(Screen.width / 2 - 210, Screen.height / 2 - 200, 500, 200), GridValue, Grids, 4);
 
         //Side Bars
         
         
     }
     
         
     
 }
 
               And here is my script for my pause menu:
 var mainMenuSceneName : String;
 var pauseMenuFont : Font;
 private var pauseEnabled = false;    
 var IlluminatiSkin : GUISkin[];        
 
 function Start(){
     pauseEnabled = false;
     Time.timeScale = 1;
     AudioListener.volume = 1;
     Screen.showCursor = false;
 }
 
 function Update(){
 
     //check if pause button (escape key) is pressed
     if(Input.GetKeyDown("escape")){
     
         //check if game is already paused        
         if(pauseEnabled == true){
             //unpause the game
             pauseEnabled = false;
             Time.timeScale = 1;
             AudioListener.volume = 1;
             Screen.showCursor = false;    
             GetComponent(MouseLook).enabled = true;    
             Screen.lockCursor = true;
             
         }
         
         //else if game isn't paused, then pause it
         else if(pauseEnabled == false){
             pauseEnabled = true;
             AudioListener.volume = 0;
             Time.timeScale = 0;
             Screen.showCursor = true;
             GetComponent(MouseLook).enabled = false;
             Screen.lockCursor = false;
         }
     }
 }
 
 private var showGraphicsDropDown = false;
 
 function OnGUI(){
 
 GUI.skin.box.font = pauseMenuFont;
 GUI.skin.button.font = pauseMenuFont;
      GUI.skin =  IlluminatiSkin;
 
     if(pauseEnabled == true){
         
         //Make a background box
         GUI.Box(Rect(Screen.width /2 - 100,Screen.height /2 - 100,250,200), "Pause Menu");
         
         //Make Main Menu button
         if(GUI.Button(Rect(Screen.width /2 - 100,Screen.height /2 - 50,250,50), "Main Menu")){
             Application.LoadLevel(mainMenuSceneName);
         }
         
         //Make Change Graphics Quality button
             if(GUI.Button(Rect(Screen.width /2 - 100,Screen.height /2 ,250,50), "Change Graphics Quality")){
             
             if(showGraphicsDropDown == false){
                 showGraphicsDropDown = true;
             }
             else{
                 showGraphicsDropDown = false;
             }
         }
         
         //Create the Graphics settings buttons, these won't show automatically, they will be called when
         //the user clicks on the "Change Graphics Quality" Button, and then dissapear when they click
         //on it again....
         if(showGraphicsDropDown == true){
             if(GUI.Button(Rect(Screen.width /2 + 150,Screen.height /2 ,250,50), "Fastest")){
                 QualitySettings.currentLevel = QualityLevel.Fastest;
             }
             if(GUI.Button(Rect(Screen.width /2 + 150,Screen.height /2 + 50,250,50), "Fast")){
                 QualitySettings.currentLevel = QualityLevel.Fast;
             }
             if(GUI.Button(Rect(Screen.width /2 + 150,Screen.height /2 + 100,250,50), "Simple")){
                 QualitySettings.currentLevel = QualityLevel.Simple;
             }
             if(GUI.Button(Rect(Screen.width /2 + 150,Screen.height /2 + 150,250,50), "Good")){
                 QualitySettings.currentLevel = QualityLevel.Good;
             }
             if(GUI.Button(Rect(Screen.width /2 + 150,Screen.height /2 + 200,250,50), "Beautiful")){
                 QualitySettings.currentLevel = QualityLevel.Beautiful;
             }
             if(GUI.Button(Rect(Screen.width /2 + 150,Screen.height /2 + 250,250,50), "Fantastic")){
                 QualitySettings.currentLevel = QualityLevel.Fantastic;
             }
             
             if(Input.GetKeyDown("escape")){
                 showGraphicsDropDown = false;
             }
         }
         
         //Make quit game button
         if (GUI.Button (Rect (Screen.width /2 - 100,Screen.height /2 + 50,250,50), "Quit Game")){
             Application.Quit();
         }
     }
 }
 
               Please could you notify me what is wrong with these, also please could you answer ASAP, many thanks.
Answer by phodges · Nov 09, 2012 at 07:15 PM
If "IlluminatiSkin" is meant to be a reference to a single skin and not a collection, then you should not declare it as an array:
 var IlluminatiSkin : GUISkin;
 
               Note also that your pause menu font changes are being applied to whichever skin is in effect before you activate the Illuminati skin.
Hi, thanks for the reply, Illu$$anonymous$$atiskin, is the name of my GUISkin, But it also happens on my pause menu, which doesn't have an Array.
It does in the example that you posted - that's what the square brackets mean.
Ok, thanks so much for the reply, one more problem now, i changed the box to a window, because i prefer the gui skin for the window, but now the window overpowers everything else, meaning that you can't see the buttons etc.
That's a somewhat different problem. Could you accept this answer and create a new question, filling out information relevant to this issue?
Bump. I see you have added a new question. Please consider accepting the answer to this one as being correct.
Your answer
 
             Follow this Question
Related Questions
Setting Scroll View Width GUILayout 1 Answer
Error: you are pushing more GUIClips than you are poping. 1 Answer
Problems controlling the GUI skin / style 2 Answers
Automatic new line 1 Answer
Global GUISkin? 1 Answer