C# Unity-切换值的按钮事件

C# Unity-切换值的按钮事件,c#,button,unity3d,boolean,C#,Button,Unity3d,Boolean,我按照本教程创建了一个简单的时钟: 一切都很好,但教程有一个数字和模拟显示的内部开关。现在,我想添加一个简单的按钮“ingame”,将bool切换为true/false 我怎样才能做到这一点? 谢谢 在场景中(画布下)添加一个,然后在ClockAnimator脚本中添加以下代码。然后,将button游戏对象拖放到脚本检查器中 public UnityEngine.UI.Button button; private void Start() { // See https://docs.u

我按照本教程创建了一个简单的时钟:

一切都很好,但教程有一个数字和模拟显示的内部开关。现在,我想添加一个简单的按钮“ingame”,将bool切换为true/false

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

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

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 ) ;
}
您可以使用按钮而不是按钮来实现相同的功能:

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 ) ;
}
在场景中(画布下)添加一个,并在
ClockAnimator
脚本中添加以下代码。然后,将button游戏对象拖放到脚本检查器中

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 ) ;
}
您可以使用按钮而不是按钮来实现相同的功能:

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 ) ;
}

向脚本中添加方法以更改模拟值

public void OnClick()
{
   analog = !analog;
}
在场景中创建一个按钮,确保它位于画布下,选择该按钮,然后将脚本拖动到OnClick()部分。从下拉列表中选择OnClick()方法


您可以从这里添加多个单击事件,此方法允许您轻松查看按钮上附加的方法,而无需查看代码,随着时间的推移,代码可能会变得复杂。

向脚本添加方法以更改模拟值

public void OnClick()
{
   analog = !analog;
}
在场景中创建一个按钮,确保它位于画布下,选择该按钮,然后将脚本拖动到OnClick()部分。从下拉列表中选择OnClick()方法


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

谢谢!工作起来很有魅力。使用按钮的onclick属性有助于在运行时更改其侦听器,但我不会使用它来正常设置按钮的侦听器。如果您正在设计UI,您可能会有许多不同的按钮,每个按钮上都连接有多个侦听器。通常监听器会附加在inspector中,正如我在回答中所描述的。使用inspector对于快速原型制作非常有用,但它不健壮,容易出错(假设您的UI设计师选择了错误的函数来调用),并且在使用预置时非常糟糕。此外,当您检查按钮是否为空时,更容易抛出错误,而不是因为您没有在脚本中插入检查器中的onClick而奇怪为什么按钮不工作。谢谢!工作起来很有魅力。使用按钮的onclick属性有助于在运行时更改其侦听器,但我不会使用它来正常设置按钮的侦听器。如果您正在设计UI,您可能会有许多不同的按钮,每个按钮上都连接有多个侦听器。通常监听器会附加在inspector中,正如我在回答中所描述的。使用inspector对于快速原型制作非常有用,但它不健壮,容易出错(假设您的UI设计师选择了错误的函数来调用),并且在使用预置时非常糟糕。此外,当您检查按钮是否为空时,更容易抛出错误,而不是因为您没有将检查器中的onClick插入脚本而奇怪为什么按钮不工作。比公认的解决方案好得多。利用Unity的潜力。@DávidFlorek:相信我,当你开始和几个人一起做更大的项目时,你会很快改变主意。**插入但这不是我在这里的商业形象**别担心,我已经插入了。让对代码了解很少的设计师来完成他们的工作和设计是一件非常愉快的事情。在这两种情况下,你必须处理3/5行代码。对于设计师来说,让他从资产中拖拽一个预制件,拖拽一个按钮,而不是冒险在处理按钮组件时选择错误的方法更容易。比公认的解决方案要好得多。利用Unity的潜力。@DávidFlorek:相信我,当你开始和几个人一起做更大的项目时,你会很快改变主意。**插入但这不是我在这里的商业形象**别担心,我已经插入了。让对代码了解很少的设计师来完成他们的工作和设计是一件非常愉快的事情。在这两种情况下,你必须处理3/5行代码。对于设计师来说,更容易让他从资产中拖放预制件,并拖放单个按钮,而不是冒险在处理按钮组件时选择错误的方法。