unity學習之鼠標事件

unity學習,希望我的博客能給喜歡unity的朋友帶來幫助

今天完成了遊戲的第一個關卡,覺得和別的組不同之處之一就是按鈕的不同,登錄註冊等按鈕我沒用GUI的Button來做,而是用GUITexture來做,做出來的效果就是當鼠標沒在按鈕上時是一個狀態,當鼠標移動到按鈕上是又是另一個狀態,當鼠標點擊按鈕時,又會變另一狀態,這不是特效,其實是定義了一組照片和用鼠標事件來做的。下面就讓我們來看看鼠標事件和鼠標事件的應用吧。

鼠標事件:

        鼠標事件,都是當鼠標和gui或者碰撞體(Collider)交互時候觸發。需要說明的是drag其實就是鼠標down後up之前持續每幀都會發送此消息。

        OnMouseDown:當鼠標上的按鈕被按下時觸發的事件;

        OnMouseDrag:當用戶鼠標拖拽GUI元素或碰撞體時調用;

        OnMouseEnter:當鼠標進入物體範圍時被調用;

        OnMouseExit:當鼠標退出時被調用;

        OnMouseOver:當鼠標移動到某對象的上方時觸發的事件;

        OnMouseUp:當鼠標按鍵被鬆開時觸發的事件。

        鼠標事件的應用,代碼如下:

using UnityEngine;
using System.Collections;

public class GUI_Login_Button : MonoBehaviour {
    //聲明定義GUITexture
    GUITexture guitexture;
    
    //聲明一組圖片數組
    public Texture[] login_Button_Texture;
    
    //聲明兩個標誌位flag和flag2
    bool flag;
    bool flag2;
        
    //初始化,獲取GUITexture
    void Start () {
            guitexture=GetComponent<GUITexture>();
        }
    
    //當鼠標進入物體範圍時被調用
    void OnMouseEnter() { 
          //圖片變換
          guitexture.texture=login_Button_Texture[1];
    }
    
     //當鼠標放到圖片上方時觸發事件
     void OnMouseOver() { 
        
        //當標誌位爲真時
        if(flag)
        {
             //圖片變換
             guitexture.texture = login_Button_Texture[2];
             
             //if嵌套
             //因爲登陸界面的按鈕連接着數據庫,所以要判斷輸入的內容在數據庫中不爲空
             //if括號內的內容是調用的Users類裏面的Login方法
             if (new Users().Login(Login.str, Login.str1).Name != null)
             {
                 //跳轉到ProgressBar工程
                  Application.LoadLevel("ProgressBar");
             }
             //否則,當name爲空時,flag2爲ture,執行下面的觸發器
             else {
                 flag2 = true;
             }
             //if嵌套完成
         
        }
        else
        {
           //否則,圖片變換
            guitexture.texture=login_Button_Texture[1];
        }   
    }
    void OnGUI() {
        if (flag) {
            //標誌位判斷
            //設置字體的顏色和創建Label,放置校驗
            GUI.color = Color.red;
            GUI.Label(new Rect(560, 360, 300, 50), "密碼或賬號錯誤,請重新輸入!");
        }
    }
    //當鼠標退出時被調用
    void OnMouseExit() { 
        guitexture.texture=login_Button_Texture[0];
    }
    //當鼠標上的按鈕被按下時觸發的事件
    void OnMouseDown() {
        flag = true;
    }
    //當鼠標按鍵被鬆開時觸發的事件,當鼠標鬆開時,跳轉界面
    void OnMouseUp()
    {
        flag = false;
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章