2016-06-20 151 views
0

我正在開發一個遊戲,其中需要在光標指向按鈕時更改光標圖標,並且在未指向按鈕時保留回正常狀態。到目前爲止,我已經做到了這一點,但沒有什麼好的,我有什麼建議,哪裏出錯了? 我附上的按鈕這個腳本...當鼠標懸停在按鈕上時更改光標的圖標

using UnityEngine; 
using System.Collections; 

public class cursor : MonoBehaviour { 

    Vector2 mouse; 
    int w =32; 
    int h=32; 
    public Texture2D cursor1; 
    // Use this for initialization 
    void Start() { 
    Cursor.visible = true; 
    } 

    // Update is called once per frame 
    void Update() { 
    mouse = new Vector2(Input.mousePosition.x, Screen.height - Input.mousePosition.y); 
    } 
    void OnMouseOver() 
    { 
    Cursor.SetCursor (cursor1, Vector2.zero, CursorMode.Auto); 
    } 
    void OnMouseExit() 
    { 
    Cursor.SetCursor (null,Vector2.zero,CursorMode.Auto); 
    } 
} 

回答

2

您需要爲UI系統使用事件觸發器來更改系統的圖標或任何基於輸入的交互(這很容易實現)。

首先將鼠標懸停並將鼠標退出功能更改爲公共。 事件系統添加到您希望通過光標向 改變懸停添加您的按鈕成分 - >事件觸發 - >添加新的事件類型 - >

這裏有您可以選擇多個事件,但你只需要在指針進入和退出的指針

所以選擇指針進入 & 指針退出 - >點擊「+」標誌 - >拖放光標腳本在這兩個地方,並從腳本中選擇您的各自功能並執行您的程序。

enter image description here

另一種方式是實現事件系統的功能在你的光標腳本,並將其放在按鈕對象上,但我認爲這樣做第一種方法是乾淨的,易於實施。 Event Trigger Scripted Implementation 1

注:您的舊鼠標將在其上具有對撞機,而不是作爲用戶界面的3D世界中的物體工作,所以這就是爲什麼你的光標腳本不爲按鈕工作作爲按鈕的UI空間。雖然你也可以使用3D/2D對撞機使它們在用戶界面中工作,但是你必須使用raycasters,這是一種有點長的方法來實現。我寧願用簡單的人去除非需要

Event Trigger Info

希望這能解決你的問題。

-1

你檢查團結文檔此鏈接:

https://docs.unity3d.com/ScriptReference/Cursor.SetCursor.html

是否配置在檢查紋理像需要的?

用於遊標的紋理或null用於設置默認遊標。 請注意,紋理導入器(或使用「光標」默認值)的 中需要使用「讀取/寫入已啓用」導入紋理,以便將 用作光標。

相關問題