类一:单例cursor类,脚本位于空物体
usingUnityEngine;
/// <summary>
/// 鼠标指针管理类【单利模式】(游戏中,不同状态对于不同指针)
/// </summary>
public class CursorManager : MonoBehaviour
{
/// <summary>
/// 私有静态成员
/// </summary>
private static CursorManager instance;
/// <summary>
/// 外部访问,公共静态成员(单例)
/// </summary>
public static CursorManager GetInstance
{
get { return instance; }
}
void Start()
{
//赋值单例
instance = this;
}
/// <summary>
/// 正常状态指针图
/// </summary>
public Texture2D cursorNormal;
/// <summary>
/// 对话状态指针图
/// </summary>
public Texture2D cursorNpcTalk;
/// <summary>
/// 攻击状态指针图
/// </summary>
public Texture2D cursorAttack;
/// <summary>
/// 锁定状态指针图
/// </summary>
public Texture2D cursorLockTarget;
/// <summary>
/// 拾捡物品状态指针图
/// </summary>
public Texture2D cursorPick;
/// <summary>
/// 指针默认点击热点位置(指针左上角)
/// </summary>
private Vector2 hotspot = Vector2 .zero;
/// <summary>
/// 指针类型(Auto:自动选择)
/// </summary>
private CursorMode mode = CursorMode .Auto;
/// <summary>
/// 设置默认指针显示图
/// </summary>
public void SetNormal()
{
// 1 显示的指针图 2 默认指针点击的热点位置 3 指针类型
Cursor.SetCursor(cursorNormal, hotspot, mode);
}
/// <summary>
/// player对话时的指针图
/// </summary>
public void SetNpcTalk()
{
// 1 显示的指针图 2 默认指针点击的热点位置 3 指针类型
Cursor.SetCursor(cursorNpcTalk, hotspot, mode);
}
}
类二:调用单例,脚本位于需要调用的游戏对象
using UnityEngine;
using System.Collections;
/// <summary>
/// 鼠标指针指定区域的指针图显示切换
/// </summary>
public class MouseCursor : MonoBehaviour
{
/// <summary>
/// 当鼠标进入指定触发区域的时候
/// </summary>
void OnMouseEnter()
{
//调用单例模式里的指针方法
CursorManager.GetInstance.SetNormal();
}
/// <summary>
/// 当鼠标指针离开指定触发区域的时候
/// </summary>
void OnMouseExit()
{
//调用单例模式里的指针方法
CursorManager.GetInstance.SetNpcTalk();
}
}