using Cal.DataTable; using ET; using System; using System.Collections.Generic; using System.Linq; using System.Text; using UnityEditor; using UnityEngine; namespace ET { public class CreateRoleUnitComponentUpdateSystem : UpdateSystem { public override void Update(CreateRoleUnitComponent self) { if (Input.GetMouseButtonDown(0)) { var zoneScene = self.ZoneScene(); Vector2 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition); //射线检测怪物 RaycastHit2D hit = Physics2D.Raycast(mousePos, Vector2.zero, 100, 1 << LayerMask.NameToLayer("Player")); if (hit.collider != null) { GameObject go = hit.collider.gameObject; CreateRoleUnit unit = (CreateRoleUnit)go.GetComponentInParent().Component; self.ZoneScene().GetComponent().SetAllEffectInactive(); unit.SelectEffect.SetActive(true); zoneScene.GetComponent().JobId = unit.JobId; } } } } public class CreateRoleUnitComponentDestroySystem : DestroySystem { public override void Destroy(CreateRoleUnitComponent self) { self.Clear(); } } public static class CreateRoleUnitComponentSystem { public static void SetAllEffectInactive(this CreateRoleUnitComponent self) { foreach (CreateRoleUnit item in self.GetAll()) { item.SelectEffect.SetActive(false); } } } public class CreateRoleUnitComponent:Entity { private HashSet roleHashSet = new HashSet(); public void Add(CreateRoleUnit unit) { roleHashSet.Add(unit); } public IEnumerable GetAll() { return roleHashSet; } public async ETVoid GenerateSelectRole() { var zoneScene = this.ZoneScene(); zoneScene.GetComponent().JobId = 1; for (int id = 1; id < 9; id++) { RolesPosition positions = DataTableHelper.Get(id); Transform tran = await ResourceViewHelper.LoadPrefabAsync(id); tran.position = new UnityEngine.Vector3(positions.Posx, positions.Posy, PosHelper.PlayerPos_Z); CreateRoleUnit unit = EntityFactory.CreateWithParent(Game.Scene, tran.gameObject); unit.JobId = id; Add(unit); } Game.EventSystem.Publish_Sync(new ET.EventType.TranslateSceneEnd { }); } public void Clear() { foreach (CreateRoleUnit unit in roleHashSet) { unit.Dispose(); } roleHashSet.Clear(); } } }