NewN_UAVPlane/Assets/Temp/Scripts/Doubleclickdelete.cs

131 lines
3.9 KiB
C#

using DataModel.Model;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
using UnityEngine.Events;
public class Doubleclickdelete : MonoBehaviour
{
public UnityEvent standaloneevent;
public UnityEvent doubleclickecent;
public float timer;//用来判断是否事单机还是双击
public float lasttime;//计入当前场景的时间
public int count;//用来判断点击了几下
public float interval = 0.2f;//用来判断双击间隔时间
private bool iscount = true;//用来判断的是单机还是双击
void Start()
{
}
void Update()
{
if (Input.GetMouseButtonDown(1))
{
timer = 0.2f;
if (Time.realtimeSinceStartup - lasttime < interval)
{
count = 2;
}
else
{
count = 1;
}
}
if (Input.GetMouseButtonUp(1))
{
iscount = false;
lasttime = Time.realtimeSinceStartup;
}
if (!iscount)
{
timer -= Time.deltaTime;
if (timer < 0)
{
if (count == 1)
{
standaloneevent?.Invoke();
}
else if (count == 2)
{
Deletionmodel();
doubleclickecent?.Invoke();
}
iscount = true;
}
}
}
private void Deletionmodel()
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit, Mathf.Infinity))
{
if (hit.collider.gameObject.tag=="model")
{
Modeldeletion(hit.collider.gameObject);
//if (DragManager.Instance.devices.Count > 0)
//{
// Scenariopage scenariopage = GetComponent<Scenariopage>();
// for (int i = 0; i < DragManager.Instance.devices.Count; i++)
// {
// int index = i;
// if (hit.collider.gameObject.name == DragManager.Instance.devices[index].name)
// {
// Destroy(DragManager.Instance.devices[index].gameObject);
// DragManager.Instance.devices.RemoveAt(index);
// if (scenariopage.properties.Count > 0)
// {
// Deletebutton(scenariopage,DragManager.Instance.devices[index].gameObject.name);
// }
// break;
// }
// }
//}
}
}
}
private void Modeldeletion(GameObject gameObject)
{
Scenariopage scenariopage = GetComponent<Scenariopage>();
for (int i = 0; i < DragManager.Instance.devices.Count; i++)
{
int index = i;
if (gameObject.name == DragManager.Instance.devices[index].name)
{
Destroy(DragManager.Instance.devices[index].gameObject);
DragManager.Instance.devices.RemoveAt(index);
if (scenariopage.properties.Count > 0)
{
Deletebutton(scenariopage, DragManager.Instance.devices[index].gameObject.name);
}
break;
}
}
}
private void Deletebutton(Scenariopage scenariopage, string name)
{
for (int i = 0; i < scenariopage.properties.Count; i++)
{
int index = i;
if (scenariopage.properties[index].name == name)
{
Destroy(scenariopage.properties[index].gameObject);
scenariopage.properties.RemoveAt(index);
break;
}
}
}
}