在Unity3d中如何碰撞触发GUI的显示,然后3秒之后自动消失?(求详细代码)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Unity3d中如何碰撞触发GUI的显示,然后3秒之后自动消失?(求详细代码)相关的知识,希望对你有一定的参考价值。

参考技术A 你说的不够详细。。。
有2个思路,第一种是3D场景中的GUI,你可以再点击事件后计算时间(LS的思路)。然后把对应的物体设置为隐藏。
第二种系统自带的GUI,那么你就在UI显示的前面加个布尔判断。
例:
if(isShow)
if(GUI.Button(.........))




IEnumerator DelayTime()
//这里是你自己写的延迟时间

isShow = false;

如何处理触发器中的碰撞问题?

【中文标题】如何处理触发器中的碰撞问题?【英文标题】:How can I handle collision issue in Triggers? 【发布时间】:2017-11-01 01:23:10 【问题描述】:

我在这样的表上有一个触发器 (更新前)

UPDATE contact_us SET updated_at = unix_timestamp() WHERE id = new.id

当我使用 phpMyadmin 更新该表的一行时,它会抛出此错误:

为了看得更清楚:

#1442 - 无法更新存储函数/触发器中的表“contact_us”,因为它已被调用此存储函数/触发器的语句使用。

我该如何解决这个问题?

【问题讨论】:

也许也显示触发器? @FMashiro Ther you go 显示存储过程? @Ravi 我没有! 我认为您正在创建一个无限循环,因为您的触发器与您尝试运行的 SQL 语句相同。所以,触发器运行,因为它运行,它也调用自己,等等...... 【参考方案1】:

    首先,此功能根本不需要触发器,只需使用带有automatic initialisation 的时间戳或日期时间字段即可。所以,定义updated_at如下:

    updated_at  TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
    

    如果您出于某种原因坚持使用触发器,即使那样,也不要使用单独的 update 语句来更新定义触发器的同一个表,因为这是不行的(无限循环)。使用NEW关键字访问新建记录的字段,修改字段内容:

    set NEW.updated_at = unix_timestamp();
    

【讨论】:

当行创建而不是更新时,您的第一种方法将起作用。 @stack 然后按照文档建议将ON UPDATE CURRENT_TIMESTAMP 添加到字段定义中。我将其添加到答案中。 听起来不错,但我现在如何为updated_at 行添加ON UPDATE CURRENT_TIMESTAMP?我的意思是目前该表已创建。我需要alter 吗? @stack 好吧,你可以通过说 abracadabra 来尝试,但可能一个 alter table 就可以了。使用您最喜欢的 MySQL 管理器 GUI 来编辑字段定义。 好的,我在 phpMyadmin 中找到了一个选项,它可以为我做到这一点。但是该列的数据类型是int(11),我需要在其中存储unix_timestamp()(这是一个秒序列),而不是CURRENT_TIMESTAMP。你有什么主意吗?顺便点赞

以上是关于在Unity3d中如何碰撞触发GUI的显示,然后3秒之后自动消失?(求详细代码)的主要内容,如果未能解决你的问题,请参考以下文章

Unity3D中碰撞器和触发器的区别是啥啊?

unity3d碰撞器检测碰撞跟触发器检测碰撞哪个好些

unity3d怎么做碰撞?unity3d如何添加碰撞体?求解!

Unity3d碰撞检测中碰撞器与触发器的区别

Unity3D使用时发现的问题及解决方法(触发碰撞条件)

Unity3d -- Collider(碰撞器与触发器)