You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
231 lines
6.4 KiB
231 lines
6.4 KiB
4 years ago
|
using System.Collections;
|
||
|
using System.Collections.Generic;
|
||
|
using UnityEngine;
|
||
|
using UnityEngine.UI;
|
||
|
using AX.InputSystem;
|
||
|
using System;
|
||
|
using AX.MessageSystem;
|
||
|
|
||
|
/// <summary>
|
||
|
/// 鼠标指针管理类【单利模式】(游戏中,不同状态对于不同指针)
|
||
|
/// </summary>
|
||
|
public class CursorManager : MonoBehaviour
|
||
|
{
|
||
|
/// <summary>
|
||
|
/// 私有静态成员
|
||
|
/// </summary>
|
||
|
private static CursorManager instance;
|
||
|
|
||
|
private GameObject cursor;
|
||
|
private GameObject replayCursor;
|
||
|
private Transform cursorParent;
|
||
|
|
||
|
private DateTime t1;
|
||
|
private DateTime t2;
|
||
|
/// <summary>
|
||
|
/// 外部访问,公共静态成员(单例)
|
||
|
/// </summary>
|
||
|
public static CursorManager GetInstance
|
||
|
{
|
||
|
get { return instance; }
|
||
|
}
|
||
|
|
||
|
void Start()
|
||
|
{
|
||
|
//赋值单例
|
||
|
instance = this;
|
||
|
|
||
|
// Cursor.visible = false;
|
||
|
|
||
|
cursorParent = GameObject.Find("Canvas").transform;
|
||
|
|
||
|
// cursor = Instantiate(cursorNormal, cursorParent) as GameObject;
|
||
|
//添加层控制
|
||
|
//Canvas c;
|
||
|
//if (!cursor.GetComponent<Canvas>())
|
||
|
//{
|
||
|
// c = cursor.AddComponent<Canvas>();
|
||
|
//}
|
||
|
//else
|
||
|
//{
|
||
|
// c = cursor.GetComponent<Canvas>();
|
||
|
//}
|
||
|
//c.overrideSorting = true;
|
||
|
//c.sortingOrder = 30002;
|
||
|
//if (GameSettings.othersSettings.isReplayMode)
|
||
|
//{
|
||
|
// cursor.SetActive(false);
|
||
|
//}
|
||
|
|
||
|
}
|
||
|
|
||
|
private void OnEnable()
|
||
|
{
|
||
|
MessageDispatcher.AddListener("DELETE_COMMAND", SetNormalType);
|
||
|
MessageDispatcher.AddListener("CANCEL_SELECTED_COMMAND", SetNormalType);
|
||
|
|
||
|
}
|
||
|
|
||
|
private void OnDisable()
|
||
|
{
|
||
|
MessageDispatcher.RemoveListener("DELETE_COMMAND", SetNormalType);
|
||
|
MessageDispatcher.RemoveListener("CANCEL_SELECTED_COMMAND", SetNormalType);
|
||
|
}
|
||
|
private void OnDestroy()
|
||
|
{
|
||
|
Cursor.visible = true;
|
||
|
}
|
||
|
private void Update()
|
||
|
{
|
||
|
//SetNormal();
|
||
|
//Cursor.visible = false;
|
||
|
|
||
|
//if (GameSettings.othersSettings.isReplayMode)
|
||
|
//{
|
||
|
// if (!GameSettings.othersSettings.isReplayPause && !GameSettings.othersSettings.isReplayOver)
|
||
|
// {
|
||
|
// if (replayCursor)
|
||
|
// {
|
||
|
// replayCursor.SetActive(true);
|
||
|
// }
|
||
|
|
||
|
// if (!cursor.activeSelf)
|
||
|
// {
|
||
|
// if (Input.GetAxis("Mouse X") != 0 || Input.GetAxis("Mouse Y") != 0)
|
||
|
// {
|
||
|
// cursor.SetActive(true);
|
||
|
|
||
|
// t1 = DateTime.Now;
|
||
|
// }
|
||
|
// }
|
||
|
// else
|
||
|
// {
|
||
|
// t2 = DateTime.Now;
|
||
|
// if ((t2 - t1) >= new TimeSpan(0, 0, 0, 3, 0))
|
||
|
// {
|
||
|
// if (Input.GetAxis("Mouse X") == 0 && Input.GetAxis("Mouse Y") == 0)
|
||
|
// {
|
||
|
// cursor.SetActive(false);
|
||
|
// }
|
||
|
// }
|
||
|
// }
|
||
|
// }
|
||
|
// else
|
||
|
// {
|
||
|
// if (replayCursor)
|
||
|
// {
|
||
|
// replayCursor.SetActive(false);
|
||
|
// }
|
||
|
|
||
|
// if (cursor)
|
||
|
// {
|
||
|
// cursor.SetActive(true);
|
||
|
// }
|
||
|
// }
|
||
|
//}
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// 正常状态指针图
|
||
|
/// </summary>
|
||
|
public GameObject cursorNormal;
|
||
|
|
||
|
public Sprite cursorNormalSprite;
|
||
|
|
||
|
/// <summary>
|
||
|
/// 单击状态指针
|
||
|
/// </summary>
|
||
|
public Sprite cursorClickSprite;
|
||
|
/// <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()
|
||
|
{
|
||
|
Vector3 pos;
|
||
|
if (RectTransformUtility.ScreenPointToWorldPointInRectangle((RectTransform)cursorParent, Input.mousePosition, cursorParent.gameObject.GetComponent<Canvas>().worldCamera, out pos))
|
||
|
{
|
||
|
cursor.GetComponent<RectTransform>().position = pos;
|
||
|
}
|
||
|
//光标始终悬浮在UI上
|
||
|
cursor.transform.SetAsLastSibling();
|
||
|
}
|
||
|
public void SetNormalType()
|
||
|
{
|
||
|
cursor.GetComponent<Image>().sprite = cursorNormalSprite;
|
||
|
}
|
||
|
|
||
|
private void SetNormalType(IMessage msg)
|
||
|
{
|
||
|
|
||
|
//SetNormalType();
|
||
|
|
||
|
}
|
||
|
/// <summary>
|
||
|
/// 点击UI时的指针图
|
||
|
/// </summary>
|
||
|
public void SetClick(CmdArgs arg)
|
||
|
{
|
||
|
//if (!replayCursor)
|
||
|
//{
|
||
|
// replayCursor = Instantiate(cursorNormal, cursorParent) as GameObject;
|
||
|
// Canvas c;
|
||
|
// if (!replayCursor.GetComponent<Canvas>())
|
||
|
// {
|
||
|
// c = replayCursor.AddComponent<Canvas>();
|
||
|
// }
|
||
|
// else
|
||
|
// {
|
||
|
// c = replayCursor.GetComponent<Canvas>();
|
||
|
// }
|
||
|
// c.overrideSorting = true;
|
||
|
// c.sortingOrder = 30001;
|
||
|
// replayCursor.GetComponent<Image>().sprite = cursorClickSprite;
|
||
|
// Vector3 pos;
|
||
|
// if (RectTransformUtility.ScreenPointToWorldPointInRectangle((RectTransform)cursorParent, arg.currentCursorPos, cursorParent.gameObject.GetComponent<Canvas>().worldCamera, out pos))
|
||
|
// {
|
||
|
// replayCursor.GetComponent<RectTransform>().position = pos;
|
||
|
// }
|
||
|
//}
|
||
|
//else
|
||
|
//{
|
||
|
// replayCursor.GetComponent<Image>().sprite = cursorClickSprite;
|
||
|
// Vector3 pos;
|
||
|
// if (RectTransformUtility.ScreenPointToWorldPointInRectangle((RectTransform)cursorParent, arg.currentCursorPos, cursorParent.gameObject.GetComponent<Canvas>().worldCamera, out pos))
|
||
|
// {
|
||
|
// replayCursor.GetComponent<RectTransform>().position = pos;
|
||
|
// }
|
||
|
//}
|
||
|
}
|
||
|
}
|