前人研究:
Unity 实现鼠标双击_lwsas1的专栏-CSDN博客_unity 鼠标双击
需求:
项目中要求建筑物各楼层,鼠标单击时,消失;双击时,显示。以下测试用立方体代表其中某个楼层
实现:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TestDoubleClick : MonoBehaviour
{
float time = 0;
void Start()
{
time = Time.time;
}
public void OnMouseDown()
{
//当第二次点击鼠标,且时间间隔小于0.3秒时,是双击鼠标
if (Time.time - time <= 0.3f)
{
gameObject.SetActive(true);
}
//否则,是单击鼠标
else
{
gameObject.SetActive(false);
// targetFloor.SetActive(true);
}
time = Time.time;
}
}
问题:
物体消失了,就无法进行双击。
解决:
既然实际接受点击的是碰撞体,可以不让碰撞体消失,在物体消失后,继续接受点击——制造一个和原碰撞体一模一样的碰撞体,原碰撞体去掉。(我在原物体建了个空物体,直接克隆的原物体的Collider组件,命名为CloneCollider,然后把它从原物体上拖出来)
/*
*
*/
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TestDoubleClick : MonoBehaviour
{
float time = 0;
public GameObject CubeWithOutCollider;
void Start()
{
time = Time.time;
}
public void OnMouseDown()
{
//当第二次点击鼠标,且时间间隔小于0.3秒时,是双击鼠标
if (Time.time - time <= 0.3f)
{
CubeWithOutCollider.SetActive(true);
}
//否则,是单击鼠标
else
{
CubeWithOutCollider.SetActive(false);
// targetFloor.SetActive(true);
}
time = Time.time;
}
}