2016-06-20 9 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

注:ボタンはUI空間であるとして、あなたのカーソルスクリプトは、ボタンのために働いていない理由があるので、あなたの古いマウスがオーバーしていないUIとしてコライダーを持っている3Dの世界上のオブジェクト上で動作します。 3D/2Dのコライダーを使用してUIでも動作させることができますが、実装するには少し長めの方法であるレイキャスターを使用する必要があります。

これはあなたの問題を解決し

Event Trigger Info

希望

を必要としない限り、私はむしろ簡単なものとなるだろう。

-1

あなたはユニティドキュメントにこのリンクを確認しました:必要なよう

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

あなたはインスペクタにテクスチャを設定しましたか?

カーソルに使用するテクスチャ、またはデフォルトのカーソルを設定するヌル。 をカーソルとして使用するには、テクスチャインポータの (または "Cursor"デフォルトを使用)に "Read/Write enabled"でテクスチャをインポートする必要があります。

関連する問題