using cfg.CampCfg; using Cysharp.Threading.Tasks; using Framework; using Gameplay.Common; using PhxhSDK; using System.Collections; using System.Collections.Generic; using UnityEngine; namespace Gameplay.Camp { public sealed partial class Camp { /// /// 记录加载的数据 /// private HashSet setLoad; private void InitLoad() { setLoad = new(); } private void ExitLoad() { foreach (string path in setLoad) { AssetManager.Instance.Unload(path); } setLoad.Clear(); } /// /// 加载所有营地单位 /// public async UniTask SetInfoByLoad() { // TODO从服务器取得数据 int[] listCellIndex = new int[] { 60, 277 }; // 测试数据 int[] listCampItemId = new int[] { 100005, 100004 }; for (int i = 0; i < listCellIndex.Length; ++i) { await LoadBuilding(listCampItemId[i], listCellIndex[i]); } } /// /// 加载建筑 /// /// public async UniTask LoadBuilding(int id, int cellIndex) { DataCampObject dataCampObject = TableManager.Instance.Tables.CampObjectConfig.Get(id); if (null == dataCampObject) return; if (!CheckPlace(cellIndex, dataCampObject.ListPosOffset)) // 检查能否放置 return; GameObject goCampObject = await LoadCampObject(dataCampObject.Path); BuildingCampUnit buildingCampUnit = new(goCampObject, dataCampObject) { CellIndex = cellIndex }; PlaceCampItem(buildingCampUnit); } /// /// 加载物件 /// public async UniTask LoadCampObject(string path) { GameObject goCampObject = await AssetManager.Instance.LoadAssetAsync(path); if (null == goCampObject) return null; setLoad.Add(path); GameObject go = Object.Instantiate(goCampObject, tsCampObjectRoot); go.SetLayerEx(LayerDefine.UIView); return go; } } }