1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
 
//武将筛选
public class HeroSelectBehaviour : MonoBehaviour
{
    [SerializeField] Transform unFoldForm;  //展开后的容器
    [SerializeField] Button foldBtn;    //收起按钮
    [SerializeField] Transform foldForm;    //收起容器
    [SerializeField] Button unFoldBtn;  //展开按钮
    [SerializeField] GroupButtonEx[] jobsBtn;
    [SerializeField] GroupButtonEx[] countrysBtn;
    [SerializeField] GroupButtonExManager jobManager; 
    [SerializeField] GroupButtonExManager countryManager; 
 
    int m_Job = 0;
    int m_Country = 0;
    int foldState = 0;  //0 收起,1 展开
 
    //点击按钮需通知响应外部事件
    public Action<int, int> selectAction;
    
 
 
 
    void Awake()
    {
        foldBtn.AddListener(() =>
        {
            foldState = 0;
            RefreshFolState();
        });
        unFoldBtn.AddListener(() =>
        {
            foldState = 1;
            RefreshFolState();
        });
 
        for (int i = 0; i < jobsBtn.Length; i++)
        {
            int index = i;
            jobsBtn[i].AddListener(() =>
            {
                m_Job = index;
                RefreshJobsBtn();
                selectAction?.Invoke(m_Job, m_Country);
            });
        }
 
        for (int i = 0; i < countrysBtn.Length; i++)
        {
            int index = i;
            countrysBtn[i].AddListener(() =>
            {
                m_Country = index;
                RefreshCountryBtn();
                selectAction?.Invoke(m_Job, m_Country);
            });
        }
 
    }
 
    public void Display(int state, int job, int country, Action<int, int> onRefresh)
    {
        foldState = state;
        m_Job = job;
        m_Country = country;
 
        RefreshFolState();
        RefreshJobsBtn();
        RefreshCountryBtn();
        selectAction = onRefresh;
 
    }
 
 
    //刷新全部分类 
    void RefreshJobsBtn()
    {
        jobManager.SelectButton(jobsBtn[m_Job]);
    }
    //刷新全部分类
    void RefreshCountryBtn()
    {
        countryManager.SelectButton(countrysBtn[m_Country]);
    }
    //刷新展开收起状态
    void RefreshFolState()
    {
        unFoldBtn.SetActive(foldState == 1);
        foldBtn.SetActive(foldState == 0);
    }
}