Files
Seek-Battle-Evacuate/Assets/GameMain/Scripts/UI/Squad/SquadForm.Logic.cs
T
2026-08-30 22:25:23 +08:00

50 lines
1.7 KiB
C#

using System.Collections.Generic;
using SepCore.Definition;
using UnityEngine;
using UnityGameFramework.Runtime;
namespace SepCore.UI
{
/// <summary>
/// 编队界面逻辑(手写 partial,与自动生成的 SquadForm.cs 合并)。
/// 以传入的角色列表重建角色槽列表,模板槽来自 SquadView.characterSlotTemplate。
/// </summary>
public partial class SquadForm : UGuiForm
{
/// <summary>
/// 按传入的角色列表重建角色槽列表 UI,每名角色一个槽位。
/// </summary>
public void RefreshCharacterList(IReadOnlyList<CharacterSave> characters)
{
SquadView squadView = View;
if (squadView == null || squadView.characterSlotRoot == null ||
squadView.characterSlotTemplate == null)
{
Log.Warning("SquadForm is not fully configured.");
return;
}
CharacterSlotItem template = squadView.characterSlotTemplate;
template.gameObject.SetActive(false);
for (int i = squadView.characterSlotRoot.childCount - 1; i >= 0; i--)
{
Transform child = squadView.characterSlotRoot.GetChild(i);
if (child == template.transform)
{
continue;
}
Destroy(child.gameObject);
}
int characterCount = characters != null ? characters.Count : 0;
for (int i = 0; i < characterCount; i++)
{
CharacterSlotItem slot = Instantiate(template, squadView.characterSlotRoot);
slot.gameObject.SetActive(true);
slot.SetCharacter(characters[i]);
}
}
}
}