Search code examples
c#androidunity-game-engineclicktouch

How to detect mouse click on GUITexture in unity


I am trying to add controls through mouse in place of keyboard in the game. I added 4 movement keys and 1 fire button through the GUI texture in unity. In the game there is already a player controller which controls the player through keyboard strokes

I didnt get, how to make the player move if the direction button (GUITexture) is clicked

Button Script

using UnityEngine; using System.Collections;

public class RightButton : MonoBehaviour {

public Texture2D bgTexture;
public Texture2D airBarTexture;
public int iconWidth = 32;
public Vector2 airOffset = new Vector2(10, 10);


void start(){
    }

void OnGUI(){
    int percent = 100;

    DrawMeter (airOffset.x, airOffset.y, airBarTexture, bgTexture, percent);
}

void DrawMeter(float x, float y, Texture2D texture, Texture2D background, float percent){
    var bgW = background.width;
    var bgH = background.height;

    GUI.DrawTexture (new Rect (x, y, bgW, bgH), background);

    var nW = ((bgW - iconWidth) * percent) + iconWidth;

    GUI.BeginGroup (new Rect (x, y, nW, bgH));
    GUI.DrawTexture (new Rect (0, 0, bgW, bgH), texture);
    GUI.EndGroup ();


}

}

I am unable to add the GUI Button in place of GUI.DrawTexture, its giving invalid argument error and so i am unable to add how to check the button is clicked or not

Thanks


Solution

  • GUITexture is part of the legacy GUI system. An example of how to get this to work as a button is here.

    using UnityEngine;
    using System.Collections;
    
    public class RightButton : MonoBehaviour {
    
        public Texture bgTexture;
        public Texture airBarTexture;
        public int iconWidth = 32;
        public Vector2 airOffset = new Vector2(10, 10);
    
    
        void start(){
        }
    
        void OnGUI(){
            int percent = 100;
    
            DrawMeter (airOffset.x, airOffset.y, airBarTexture, bgTexture, percent);
        }
    
        void DrawMeter(float x, float y, Texture texture, Texture background, float percent){
            var bgW = background.width;
            var bgH = background.height;
    
            if (GUI.Button (new Rect (x, y, bgW, bgH), background)){
                // Handle button click event here
            }
    
            var nW = ((bgW - iconWidth) * percent) + iconWidth;
    
            GUI.BeginGroup (new Rect (x, y, nW, bgH));
            GUI.DrawTexture (new Rect (0, 0, bgW, bgH), texture);
            GUI.EndGroup ();
        }
    }