using System.Collections.Generic; using System.Threading; using Cysharp.Threading.Tasks; using Game.Room; using UnityEngine; namespace Game.Boss; public interface IBossManager { IReadOnlyList bosses { get; } UniTask MoveToKillPlayerAsync(List rooms, CancellationToken token); void DeleteBoss(); } public class BossManager : ManagerBase, IBossManager { private List _bosses; public IReadOnlyList bosses => this._bosses; public async UniTask MoveToKillPlayerAsync(List rooms, CancellationToken token) { this._bosses = new List(); foreach (var room in rooms) { IBoss boss = new Boss(); var gameObject = Game.resourceManager.LoadGameObjectSync("boss1"); boss.SetGameObject(gameObject, room); _bosses.Add(boss); } float jinBei = 0; List uniTasks = new List(); foreach (var boss in this._bosses) { jinBei += boss.room.roomData.jinbei; var uniTask = boss.WaitMoveRoomAndKillAsync(token); uniTasks.Add(uniTask); } await UniTask.WhenAll(uniTasks); Debug.Log($"杀掉了随机房间玩家,金贝数量总和为:{jinBei}"); } public void DeleteBoss() { foreach (var boss in this._bosses) { boss.Dispose(); } this._bosses.Clear(); } }