Unity两组Toggle一一对应关系

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Crosscorrelation : MonoBehaviour
{
   
    public Toggle[] leftToggles;
    public Toggle[] rightToggles;
    private int lastClickedToggleIndex = -1;
    // Start is called before the first frame update
    void Start()
    {
   
        for (int i = 0; i < leftToggles.Length; i++)
        {
   
            int index = i;
            leftToggles[i].onValueChanged.AddListener(isOn => HandleToggleChanged(index, isOn, true));
            rightToggles[i].onValueChanged.AddListener(isOn => HandleToggleChanged(index, isOn, false));
        }
    }
    private void HandleToggleChanged(int index, bool isOn, bool isLeftToggle)
    {
   
        if (isOn)
        {
   
            lastClickedToggleIndex = index;
            SyncToggles(index, isLeftToggle);

        }
        else
        {
   
            SetToggleState(index, false, isLeftToggle); // 当一个Toggle被设置为false时,同步关闭另一个Toggle
            lastClickedToggleIndex = -1;
        }
        CommonToggleChangedHandler(index);
    }



    private void SyncToggles(int index, bool isLeftToggle)
    {
   
        //设置当前组Toggle状态
        SetToggleState(index, true, isLeftToggle);
        //重置其他所有Toggles
        for (int i = 0; i < leftToggles.Length; i++)
        {
   
            if (i != index)
            {
   
                SetToggleState(i, false, true); // 关闭其他所有Toggles
            }
        }

    }
    private void SetToggleState(int index, bool isOn, bool isLeftToggle)
    {
   
        if (isLeftToggle)
        {
   
            leftToggles[index].isOn = isOn;
            rightToggles[index].isOn = isOn;
        }
        else
        {
   
            rightToggles[index].isOn = isOn;
            leftToggles[index].isOn = isOn;
        }
    }

    private void CommonToggleChangedHandler(int index)
    {
   
        Debug.Log("执行共同方法");
    }
    // Update is called once per frame
    void Update()
    {
   

    }
}

用于点击一按钮另一按钮也执行,同时在Toggle组里只有当前点击的toggle为true,其他为false

相关推荐

  1. UnityToggle一一对应关系

    2024-01-10 09:06:05       55 阅读
  2. 【名词解释】Unity中的Toggle件及其使用示例

    2024-01-10 09:06:05       29 阅读
  3. Unity关于的一些组件

    2024-01-10 09:06:05       48 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-10 09:06:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-10 09:06:05       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-10 09:06:05       82 阅读
  4. Python语言-面向对象

    2024-01-10 09:06:05       91 阅读

热门阅读

  1. Agisoft Metashape 地面点分类参数设置

    2024-01-10 09:06:05       61 阅读
  2. 如何使用 Golang 比较版本号大小?

    2024-01-10 09:06:05       57 阅读
  3. vim文本编辑器,常用命令

    2024-01-10 09:06:05       59 阅读
  4. Swagger2以及Spring Boot整合Swagger2教程

    2024-01-10 09:06:05       58 阅读
  5. BOM简介

    BOM简介

    2024-01-10 09:06:05      39 阅读