yyl
2026-01-29 81018a57144a3ed68634102a3406bb63b27fa9dd
Main/System/ViewNPC/ViewNPCManager.cs
@@ -34,6 +34,7 @@
    private void ResetPendingState()
    {
        isPendingOpen = false;
        viewNPCAttr = null;
        pendingData.isMySide = false;
        pendingData.funcLineID = 0;
        pendingData.mapID = 0;
@@ -51,7 +52,11 @@
        // 自己的数据直接读背包
        if (data.isMySide)
        {
            OpenNPCDetailWin(pendingData, null);
            OtherPlayerDetailManager.Instance.OpenOtherHeroDetailWin(new ViewHeroDetailData()
            {
                viewHeroType = 0,
                clickHeroData = data,
            });
            return;
        }
@@ -71,7 +76,7 @@
        // 尝试直接从缓存获取数据
        if (TryGetNPCAttr((uint)data.mapID, (uint)data.funcLineID, (uint)data.npcID, out ViewNPCAttr attr))
        {
            OpenNPCDetailWin(pendingData, attr);
            OpenNPCDetailWin(attr);
        }
        else
        {
@@ -108,40 +113,24 @@
        int posNum = pendingData.posNum + 1;
        if (!heroData.ContainsKey(posNum))
            return;
        OtherPlayerDetailManager.Instance.viewHeroType = 0;
        OtherPlayerDetailManager.Instance.clickHeroData = pendingData;
        OtherPlayerDetailManager.Instance.heroData = heroData[posNum];
        OtherPlayerDetailManager.Instance.heroDatas = heroList;
        if (!UIManager.Instance.IsOpened<OtherHeroDetailWin>())
        OtherPlayerDetailManager.Instance.OpenOtherHeroDetailWin(new ViewHeroDetailData()
        {
            UIManager.Instance.OpenWindow<OtherHeroDetailWin>();
        }
            viewHeroType = 0,
            clickHeroData = pendingData,
            heroData = heroData[posNum],
            heroDatas = heroList,
        });
    }
    private void OpenNPCDetailWin(BattleClickHeroData data, ViewNPCAttr npcAttr)
    public ViewNPCAttr viewNPCAttr;
    private void OpenNPCDetailWin(ViewNPCAttr viewNPCAttr)
    {
        OtherPlayerDetailManager.Instance.viewHeroType = 0;
        OtherPlayerDetailManager.Instance.clickHeroData = data;
        OtherPlayerDetailManager.Instance.viewNPCAttr = npcAttr;
        if (data.isMySide)
        this.viewNPCAttr = viewNPCAttr;
        if (!UIManager.Instance.IsOpened<OtherNPCDetailWin>())
        {
            if (!UIManager.Instance.IsOpened<OtherHeroDetailWin>())
            {
                UIManager.Instance.OpenWindow<OtherHeroDetailWin>();
            }
            UIManager.Instance.OpenWindow<OtherNPCDetailWin>();
        }
        else
        {
            if (!UIManager.Instance.IsOpened<OtherNPCDetailWin>())
            {
                UIManager.Instance.OpenWindow<OtherNPCDetailWin>();
            }
        }
    }
    // --- 解析属性字典 ---
@@ -231,7 +220,7 @@
            {
                if (TryGetNPCAttr((uint)pendingData.mapID, (uint)pendingData.funcLineID, (uint)pendingData.npcID, out ViewNPCAttr targetAttr))
                {
                    OpenNPCDetailWin(pendingData, targetAttr);
                    OpenNPCDetailWin(targetAttr);
                }
                // 处理完毕,重置状态
                ResetPendingState();
@@ -277,6 +266,7 @@
    }
}
public class ViewNPCAttr
{
    public byte PosNum;        // 在本阵容中的站位,从1开始