【编队】编队场景生命周期管理
parent
bb79797796
commit
b0fee28670
|
|
@ -19,6 +19,7 @@ public class TeamEditManager : Singlenton<TeamEditManager>, IInitable
|
|||
private List<Team> _teamList;
|
||||
private Team _selectTeam;
|
||||
private TeamPreviewNode _teamPreviewNode;
|
||||
public static readonly List<string> PreviewNodeOpenList = new List<string>();
|
||||
|
||||
public List<Team> TeamList => _teamList;
|
||||
public TeamPreviewNode TeamPreviewNode => _teamPreviewNode;
|
||||
|
|
@ -133,20 +134,30 @@ public class TeamEditManager : Singlenton<TeamEditManager>, IInitable
|
|||
NetHelper.CreateTeam((uint)team.TeamIndex, team.Name, (uint)team.IconNumber, charIds, team.GetVehicleID());
|
||||
}
|
||||
|
||||
public async UniTask LoadTeamPreviewNode(int teamIdx)
|
||||
public async UniTask LoadTeamPreviewNode(int teamIdx, string openPanel = "")
|
||||
{
|
||||
if (string.IsNullOrEmpty(openPanel))
|
||||
{
|
||||
DebugUtil.LogError("----- 请传入打开TeamPreviewNode的界面名!!!-----");
|
||||
}
|
||||
SetRawImageRect(Screen.width, Screen.height);
|
||||
if (_teamPreviewNode)
|
||||
|
||||
if (_teamPreviewNode && PreviewNodeOpenList.Count > 0)
|
||||
{
|
||||
RefreshPreviewNode(teamIdx);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!PreviewNodeOpenList.Contains(openPanel))
|
||||
{
|
||||
PreviewNodeOpenList.Add(openPanel);
|
||||
}
|
||||
|
||||
await LoadNewTeamPreviewNode(teamIdx);
|
||||
|
||||
}
|
||||
public async UniTask LoadNewTeamPreviewNode(int teamIdx)
|
||||
{
|
||||
ReleaseTeamPreviewNode();
|
||||
DoReleaseTeamPreviewNode();
|
||||
|
||||
var team = _teamList[teamIdx];
|
||||
var charIDs = team.GetCharacterIDs();
|
||||
|
|
@ -173,7 +184,22 @@ public class TeamEditManager : Singlenton<TeamEditManager>, IInitable
|
|||
}
|
||||
}
|
||||
|
||||
public void ReleaseTeamPreviewNode()
|
||||
public void ReleaseTeamPreviewNode(string releasePanel = "")
|
||||
{
|
||||
if (string.IsNullOrEmpty(releasePanel))
|
||||
{
|
||||
DebugUtil.LogError("----- 请传入释放TeamPreviewNode的界面名!!!-----");
|
||||
}
|
||||
|
||||
PreviewNodeOpenList.Remove(releasePanel);
|
||||
|
||||
if (_teamPreviewNode && PreviewNodeOpenList.Count <= 0)
|
||||
{
|
||||
DoReleaseTeamPreviewNode();
|
||||
}
|
||||
}
|
||||
|
||||
private void DoReleaseTeamPreviewNode()
|
||||
{
|
||||
if (_teamPreviewNode)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -31,6 +31,8 @@ public class TeamPreviewNode: MonoBehaviour
|
|||
private bool _isLoading;
|
||||
private int _teamIdx;
|
||||
|
||||
private bool _isReleasing;
|
||||
|
||||
private RenderTexture _rTexture;
|
||||
|
||||
private void Awake()
|
||||
|
|
@ -59,8 +61,11 @@ public class TeamPreviewNode: MonoBehaviour
|
|||
Destroy(node.gameObject);
|
||||
}
|
||||
|
||||
public void RefreshNode(int teamIdx, uint[] charIDs, uint vehicleID)
|
||||
public void RefreshNode(int teamIdx)
|
||||
{
|
||||
var team = TeamEditManager.Instance.GetTeamByIndex((uint)teamIdx);
|
||||
var charIDs = team.GetCharacterIDs();
|
||||
var vehicleID = team.GetVehicleID();
|
||||
ClearObjs();
|
||||
SetData(teamIdx, charIDs, vehicleID);
|
||||
CreateObjs();
|
||||
|
|
@ -201,6 +206,11 @@ public class TeamPreviewNode: MonoBehaviour
|
|||
if (data != null)
|
||||
{
|
||||
var prefab = await AssetManager.Instance.LoadAssetAsync<GameObject>(data.DisplayPrefabPath);
|
||||
if (!trans)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var go = Instantiate(prefab, trans.position, trans.rotation, cRoot.transform);
|
||||
if (go)
|
||||
{
|
||||
|
|
@ -257,6 +267,10 @@ public class TeamPreviewNode: MonoBehaviour
|
|||
{
|
||||
var trans = vehiclePos;
|
||||
var prefab = await AssetManager.Instance.LoadAssetAsync<GameObject>(vehicleData.Cfg.PrefabPath);
|
||||
if (!trans)
|
||||
{
|
||||
return;
|
||||
}
|
||||
var go = Instantiate(prefab, trans.position, trans.rotation, vRoot.transform);
|
||||
if (go)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -161,7 +161,7 @@ public class UI_TeamChooseController : UIWindow
|
|||
async void OnClickItem(int idx)
|
||||
{
|
||||
Team team = TeamEditManager.Instance.TeamList[idx];
|
||||
await TeamEditManager.Instance.LoadTeamPreviewNode(idx);
|
||||
await TeamEditManager.Instance.LoadTeamPreviewNode(idx, UINameConst.UITeamInfo);
|
||||
await UIManager.Instance.OpenWindow(UINameConst.UITeamInfo, team);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -122,7 +122,7 @@ public class UI_TeamInfoController : UIWindow
|
|||
private void OnBackClick()
|
||||
{
|
||||
UIManager.Instance.CloseWindow(WindowName);
|
||||
TeamEditManager.Instance.ReleaseTeamPreviewNode();
|
||||
TeamEditManager.Instance.ReleaseTeamPreviewNode(UINameConst.UITeamInfo);
|
||||
}
|
||||
|
||||
private async void OnClickCharHead(int idx)
|
||||
|
|
|
|||
|
|
@ -117,7 +117,7 @@ public class UI_BeforeFightController : UIWindow
|
|||
|
||||
private async void RefreshScene()
|
||||
{
|
||||
await TeamEditManager.Instance.LoadTeamPreviewNode(_currTeamIndex);
|
||||
await TeamEditManager.Instance.LoadTeamPreviewNode(_currTeamIndex, UINameConst.UI_BeforeFight);
|
||||
var previewNode = TeamEditManager.Instance.TeamPreviewNode;
|
||||
GetComponent<RawImage>().texture = previewNode.RTexture;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue