Unity 引擎:哪个组件称为运行脚本? [复制]
Posted
技术标签:
【中文标题】Unity 引擎:哪个组件称为运行脚本? [复制]【英文标题】:Unity engine: Which component called a running script? [duplicate] 【发布时间】:2018-09-17 14:54:16 【问题描述】:所以,我正在尝试构建菜单的动画。我想要所有按钮,但按下的按钮被分流到一边。但由于为每个按钮编写单独的脚本不够优雅(而且在动态按钮的情况下,不切实际),我需要考虑其他事情。
所以,我想制作一个可以挂在几个按钮上的脚本。当它们中的任何一个被按下时,脚本被调用,识别哪个按钮调用它,并将其排除在使用其分流动画之外。伪代码说明:
for (each button)
if (pressed_button != this_button)
run this_button's animation
但是有一个问题:我这辈子都不知道如何识别按下的按钮!有什么建议吗?
【问题讨论】:
参见副本中的#2。它在函数中执行此操作并接收按钮引用作为参数 嗯!看起来它可以解决我的问题!不过,标题和实现列表并不容易找到。 【参考方案1】:您可以将 OnClick 事件添加到您的按钮,该事件可以调用您指向的脚本中的任何公共函数。您还可以将单个参数传递给函数,该参数可以是对按钮、int、字符串等的引用。这样,您可以拥有一个带有 switch 语句的函数,该函数根据您传递的内容处理按钮按下它。
请记住,当您向按钮组件添加事件时,您需要从场景中拖入一个附有脚本的游戏对象,以便访问其公共功能。您不能只是将脚本本身直接拖到 OnClick 事件中。
【讨论】:
您也可以简单地将引用作为值传递(在这种情况下,例如游戏对象或其任何组件)。因此,您不需要根据值进行切换。 这听起来是个不错的选择。您可以通过检查器中的 OnClick 配置来执行此操作吗?我现在不在电脑前查看,但我不记得以前见过。 是的,它对引用参数的作用与对值参数的作用相同。值得一提的是,该方法最多可以接受 1 个参数。 嗯,我很喜欢参数的想法!仍然好奇如何在脚本中识别脚本的调用者 ftom,因为它必须是可能的,对吧? :P 但是,您的参数方法将是我将使用的方法。 嗯,是的,我的意思是,这解决了我的问题,我认为问题的实际部分已得到回答。但是,如果脚本有一种方法可以根据作为其调用组件的唯一原则来识别其调用组件(不是因为它提供“识别标签”,而是因为代码可以跟踪什么调用了什么),那么我也想要那个,因为学术好奇心。总有一天它可能会派上用场。以上是关于Unity 引擎:哪个组件称为运行脚本? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
Unity引擎,GetComponents 不能查找Hierarchy的全部组件,求告知错误原因?