103 lines
2.8 KiB
C#
103 lines
2.8 KiB
C#
using System;
|
|
using UnityEngine;
|
|
using UnityEngine.Serialization;
|
|
|
|
namespace ZXL.Scripts.UI
|
|
{
|
|
public class ZMouse : MonoBehaviour
|
|
{
|
|
private static ZMouse instance;
|
|
public static ZMouse Instance => instance;
|
|
|
|
public bool isMouseDown0 = false;
|
|
public bool isMouseUp0 = false;
|
|
public bool isMouseDown1 = false;
|
|
public bool isMouseUp1 = false;
|
|
public bool isDragging = false;
|
|
public GameObject downData;
|
|
public GameObject upData;
|
|
|
|
public Action<object> MouseDown0;
|
|
public Action<object, object> MouseUp0;
|
|
|
|
public Action<object> MouseDown1;
|
|
public Action<object, object> MouseUp1;
|
|
|
|
private void Awake()
|
|
{
|
|
instance = this;
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
if (Input.GetMouseButtonDown(0))
|
|
{
|
|
isMouseDown0 = true;
|
|
isMouseUp0 = false;
|
|
var obj = GetObj();
|
|
downData = obj;
|
|
MouseDown0?.Invoke(downData);
|
|
}
|
|
else if (Input.GetMouseButtonUp(0))
|
|
{
|
|
isMouseDown0 = false;
|
|
isMouseUp0 = true;
|
|
var obj = GetObj();
|
|
upData = obj;
|
|
MouseUp0?.Invoke(downData, upData);
|
|
}
|
|
else if (Input.GetMouseButton(0))
|
|
{
|
|
isMouseDown0 = true;
|
|
isMouseUp0 = false;
|
|
}
|
|
else
|
|
{
|
|
downData = null;
|
|
upData = null;
|
|
isMouseDown0 = false;
|
|
isMouseUp0 = false;
|
|
}
|
|
|
|
if (Input.GetMouseButtonDown(1))
|
|
{
|
|
isMouseDown1 = true;
|
|
isMouseUp1 = false;
|
|
var obj = GetObj();
|
|
downData = obj;
|
|
MouseDown1?.Invoke(obj);
|
|
}
|
|
else if (Input.GetMouseButtonUp(1))
|
|
{
|
|
isMouseDown1 = false;
|
|
isMouseUp1 = true;
|
|
var obj = GetObj();
|
|
upData = obj;
|
|
MouseUp1?.Invoke(downData, upData);
|
|
}
|
|
else if (Input.GetMouseButton(1))
|
|
{
|
|
isMouseDown1 = true;
|
|
isMouseUp1 = false;
|
|
}
|
|
else
|
|
{
|
|
isMouseDown1 = false;
|
|
isMouseUp1 = false;
|
|
}
|
|
}
|
|
|
|
GameObject GetObj()
|
|
{
|
|
Ray2D ray = new Ray2D(Input.mousePosition, Vector2.right);
|
|
var hit2D = Physics2D.Raycast(ray.origin, ray.direction);
|
|
if (hit2D.collider != null)
|
|
{
|
|
UnityEngine.Debug.Log(hit2D.collider.gameObject.name);
|
|
return hit2D.collider.gameObject;
|
|
}
|
|
|
|
return null;
|
|
}
|
|
}
|
|
} |