gpt4 book ai didi

c# - unity c#中如何获取点击次数

转载 作者:太空宇宙 更新时间:2023-11-03 21:03:52 24 4
gpt4 key购买 nike

我目前正在写一个统一的c#脚本,主要思想是当我点击模型的某个部分时,该部分将突出显示,现在我希望通过再次点击它返回到原始状态。当我第三次点击同一部分时,它应该再次突出显示。

我不知道如何在 Update() 方法中实现它,因为每次点击都会花费几帧,我无法识别哪个帧是第 2 次点击、第 3 次点击等。

unity中有没有不考虑帧的情况下识别点击次数的方法?

 void Update(){
if (Input.GetMouseButton(0))
{
RaycastHit hit;

if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit)){
bone = hit.collider.transform;
if (boneList.Contains(bone) != true)
{
/* if the part is not chosen before, add it to the list and highlight all elements in the list */
boneList.Add(bone);
Highlight(boneList);
}/*cannot delete the element chosen repetitively*/
}
}}

最佳答案

你很亲近。 else 语句应该添加到您的代码中。你的逻辑应该是这样的:

if(List contains clickedObject){
Remove clickedObject from List
UnHighlight the clickedObject
}else{
Add clickedObject to List
Highlight the clickedObject
}

另外,喜欢Serlite提到,你必须使用 GetMouseButtonDown 而不是 GetMouseButton 因为 GetMouseButtonDown 在按下键时被调用一次但 GetMouseButton 是按下键时调用每一帧。

最终代码应该是这样的:

void Update()
{
if (Input.GetMouseButtonDown(0))
{
RaycastHit hit;

if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit))
{
bone = hit.collider.transform;


if (boneList.Contains(bone))
{
//Object Clicked is already in List. Remove it from the List then UnHighlight it
boneList.Remove(bone);
UnHighlight(boneList);
}
else
{
//Object Clicked is not in List. Add it to the List then Highlight it
boneList.Add(bone);
Highlight(boneList);
}
}
}
}

您必须编写 UnHighlight 函数,它基本上将传入的 GameObject/Transform 恢复到其默认状态。

关于c# - unity c#中如何获取点击次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42587447/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com