Unity3dRPG游戏鼠标指针管理系统【单利模式】(游戏中,不同状态对于不同指针)

类一:单例cursor类,脚本位于空物体
usingUnityEngine;
/// 
/// 鼠标指针管理类【单利模式】(游戏中,不同状态对于不同指针)
/// 
public class CursorManager : MonoBehaviour
{
    /// 
    /// 私有静态成员
    /// 
    private static CursorManager instance;

    /// 
    /// 外部访问,公共静态成员(单例)
    /// 
    public static CursorManager GetInstance
    {
        get { return instance; }
    }

    void Start()
    {
        //赋值单例
        instance = this;
    }

    /// 
    /// 正常状态指针图
    /// 
    public Texture2D cursorNormal;

    /// 
    /// 对话状态指针图
    /// 
    public Texture2D cursorNpcTalk;

    /// 
    /// 攻击状态指针图
    /// 
    public Texture2D cursorAttack;

    /// 
    /// 锁定状态指针图
    /// 
    public Texture2D cursorLockTarget;

    /// 
    /// 拾捡物品状态指针图
    /// 
    public Texture2D cursorPick;

    /// 
    /// 指针默认点击热点位置(指针左上角)
    /// 
    private Vector2 hotspot = Vector2 .zero;

    /// 
    /// 指针类型(Auto:自动选择)
    /// 
    private CursorMode mode = CursorMode .Auto;

    /// 
    /// 设置默认指针显示图
    /// 
    public void SetNormal()
    {
        // 1 显示的指针图 2 默认指针点击的热点位置 3 指针类型
        Cursor.SetCursor(cursorNormal, hotspot, mode);
    }

    /// 
    /// player对话时的指针图
    /// 
    public void SetNpcTalk()
    {
        // 1 显示的指针图 2 默认指针点击的热点位置 3 指针类型
        Cursor.SetCursor(cursorNpcTalk, hotspot, mode);
    }

}

类二:调用单例,脚本位于需要调用的游戏对象
using UnityEngine;
using System.Collections;

/// 
/// 鼠标指针指定区域的指针图显示切换
/// 
public class MouseCursor : MonoBehaviour
{
    /// 
    /// 当鼠标进入指定触发区域的时候
    /// 
    void OnMouseEnter()
    {
        //调用单例模式里的指针方法
        CursorManager.GetInstance.SetNormal();
    }

    /// 
    /// 当鼠标指针离开指定触发区域的时候
    /// 
    void OnMouseExit()
    {
        //调用单例模式里的指针方法
        CursorManager.GetInstance.SetNpcTalk();
    }
}

你可能感兴趣的:(Unity3dRPG游戏鼠标指针管理系统【单利模式】(游戏中,不同状态对于不同指针))