Unity - 用于切换值的按钮事件[重复]

Posted

技术标签:

【中文标题】Unity - 用于切换值的按钮事件[重复]【英文标题】:Unity - Button Event to switch a value [duplicate] 【发布时间】:2017-06-08 08:33:05 【问题描述】:

我已按照本教程创建了一个简单的时钟:http://catlikecoding.com/unity/tutorials/clock/

一切正常,但本教程有一个用于数字和模拟显示的内部开关。现在我想添加一个简单的按钮“ingame”来将该布尔值切换为真/假。

我怎样才能做到这一点? 谢谢!

【问题讨论】:

【参考方案1】:

在脚本中添加一个方法来更改模拟值。

public void OnClick()

   analog = !analog;

在您的场景中创建一个按钮并确保它位于画布下,选择该按钮,然后将您的脚本拖到 OnClick() 部分。从下拉列表中选择您的 OnClick() 方法。

您可以从此处添加多个点击事件,并且此方法可让您轻松查看附加到按钮的方法,而无需查看代码,随着时间的推移,代码会变得复杂。

【讨论】:

比公认的解决方案好得多。利用 Unity 的潜力。 @DávidFlorek:当你开始和几个人一起做更大的项目时,相信我,你很快就会改变主意。 ** 插入,但这不是我的企业形象** 别担心,我已经做到了。让对代码知之甚少的设计师完成他们的工作和设计真是太高兴了。 在这两种情况下,您都必须处理 3/5 行代码。对于设计师来说,让他从 Assets 中拖放一个预制件,然后拖放一个按钮会更容易,而不是在处理按钮组件时冒着选择错误方法的风险。【参考方案2】:

在您的场景中(在画布下)添加一个Button,并在您的ClockAnimator 脚本中添加以下代码。然后,将按钮游戏对象拖放到脚本的检查器中。

public UnityEngine.UI.Button button;

private void Start()

    // See https://docs.unity3d.com/ScriptReference/UI.Button-onClick.html
    if( button != null )
        button.onClick.AddListener( () => analog = !analog ) ;

您可以使用Toggle 而不是按钮来实现同样的效果:

public UnityEngine.UI.Toggle toggle;

private void Start()

    // See https://docs.unity3d.com/ScriptReference/UI.Toggle-onValueChanged.html
    if( toggle != null )
        toggle.onValueChanged.AddListener( ( isOn ) => analog = isOn ) ;

【讨论】:

谢谢!奇迹般有效。认为它看起来会更容易一些。 使用按钮的 onclick 属性有利于在运行时更改其侦听器,但我不会使用它来正常设置按钮的侦听器。如果您正在设计一个 UI,您可能有许多不同的按钮,每个按钮都附加了多个侦听器。正如我在回答中所描述的,通常侦听器会附加在检查器中。 使用 Inspector 非常适合快速原型设计,但它不够健壮,容易出错(假设你的 UI 设计师选择了错误的函数来调用)并且在你使用预制件时很糟糕。此外,当您检查按钮为空时更容易引发错误,而不是想知道为什么您的按钮不起作用,因为您没有将检查器中的 onClick 插入脚本。

以上是关于Unity - 用于切换值的按钮事件[重复]的主要内容,如果未能解决你的问题,请参考以下文章

unity背包系统(摘抄)

unity 手指旋转角色的功能

Unity按钮点击事件

如何在unity中添加按钮 步骤

Unity 3d启用鼠标指针作为事件触发器的指针进入/退出[重复]

Unity3D场景切换UGUI组件事件开始游戏与关闭游戏