yyl
2026-01-27 ac93e899d5c6331e89ccae552ecbb502a9652d01
Main/System/FuncPreset/FuncPresetChooseCells.cs
@@ -14,13 +14,19 @@
public class FuncPresetChooseCells : MonoBehaviour
{
    [SerializeField] HorizontalLayoutGroup layoutGroup;
    [SerializeField] FuncPresetChooseCell[] cells;
    [SerializeField] Button unFoldBtn;   //展开更多
    //被选中的方案会显示在外层,如果不是第四个则第四个会显示在最上面
    [SerializeField] Transform moreCellObj;
    [SerializeField] FuncPresetChooseMoreCell[] moreCells;
    [SerializeField] Canvas canvas;
    bool forceUnFold = false; //强制展开,不能收缩; 流派界面的需求
    [NonSerialized] public int unFoldID = 0;    //当前展开的方案ID,在选中的情况下才生效
    int curBattleType;
    int curFuncType;
    /// <summary>
    /// 显示方案预设
@@ -33,10 +39,15 @@
    {
        forceUnFold = _forceUnFold;
        curBattleType = battleType;
        curFuncType = funcType;
        var selectID = FuncPresetManager.Instance.GetFuncPresetIDByBattleType(battleType, funcType);
        var showCount = FuncPresetManager.Instance.GetShowFuncPresetCount(funcType);
        unFoldBtn.SetActive(showCount > 4);
        unFoldBtn.AddListener(() =>
        {
            moreCellObj.SetActive(true);
        });
        for (int i = 0; i < cells.Length; i++)
        {
@@ -45,12 +56,12 @@
                cells[i].SetActive(true);
                if (i < 3)
                {
                    var _unFoldState = forceUnFold ? true : i + 1 == unFoldID;
                    var _unFoldState = forceUnFold ? i + 1 == selectID : i + 1 == unFoldID;
                    cells[i].Display(battleType, funcType, i + 1, _unFoldState);
                }
                else
                {
                    var _unFoldState = forceUnFold ? true : (selectID > 4 ? selectID : 4) == unFoldID;
                    var _unFoldState = forceUnFold ? selectID >= 4: (selectID > 4 ? selectID : 4) == unFoldID;
                    //第四个动态变化
                    cells[i].Display(battleType, funcType, selectID > 4 ? selectID : 4, _unFoldState);
                }
@@ -62,7 +73,7 @@
        }
        var showMoreCount = showCount - 4;
        for (int i = 0; i < showMoreCount; i++)
        for (int i = 0; i < moreCells.Length; i++)
        {
            if (i < showMoreCount)
            {
@@ -85,6 +96,7 @@
    void OnEnable()
    {
        canvas.sortingLayerName = "UI";
        FuncPresetManager.Instance.OnSelectPresetEvent += OnSelectPresetEvent;
    }
@@ -94,8 +106,17 @@
        FuncPresetManager.Instance.OnSelectPresetEvent -= OnSelectPresetEvent;
    }
    void OnSelectPresetEvent(int funcType, int id, bool isUnFold)
    void OnSelectPresetEvent(int battleType, int _funcType, int id, bool isUnFold)
    {
        Display(curBattleType, funcType, forceUnFold);
        if (battleType != curBattleType || curFuncType != _funcType)
            return;
        Display(curBattleType, _funcType, forceUnFold);
    }
    //默认是居中靠右
    public void ChangeAlignment(TextAnchor type)
    {
        layoutGroup.childAlignment = type;
    }
}