public virtual void Start() { ResetData(); Health = GetComponentInChildren <Health>(); if (Health == null) { var _healthPrefab = Resources.Load <Health>("Prefabs/Mechanics/Health"); Health = Instantiate(_healthPrefab, transform, false) as Health; } Stun = GetComponentInChildren <Stun>(); if (Stun == null) { var _stunPrefab = Resources.Load <Stun>("Prefabs/Mechanics/Stun"); Stun = Instantiate(_stunPrefab, transform, false) as Stun; } AbilityBuilder = new Dictionary <AbilityType, Func <Ability> >() { { AbilityType.Poke, GetAbility <PokeAbility> }, { AbilityType.Stun, GetAbility <StunAbility> }, { AbilityType.Nuke, GetAbility <NukeAbility> }, { AbilityType.Heal, GetAbility <HealAbility> }, { AbilityType.Swap, GetAbility <SwapAbility> }, { AbilityType.Barr, GetAbility <BarrAbility> }, { AbilityType.Taunt, GetAbility <TauntAbility> }, { AbilityType.Buff, GetAbility <BuffAbility> }, { AbilityType.Copy, GetAbility <CopyAbility> }, }; Health.Initialize(Data.Health); Stun.DoStun(Data.Startstun); var uiCircleColliderObject = new GameObject { layer = LayerMask.NameToLayer("UI") }; uiCircleColliderObject.transform.position = transform.position; uiCircleColliderObject.name = "Selectable" + gameObject.name; gameObject.transform.parent = uiCircleColliderObject.transform; var uiCircleCollider = uiCircleColliderObject.AddComponent <CircleCollider2D>(); uiCircleCollider.isTrigger = true; uiCircleCollider.radius = GetComponent <CircleCollider2D>().radius; // The collider is trigger GetComponent <CircleCollider2D>().isTrigger = true; // Make the collider more friendly GetComponent <CircleCollider2D>().radius *= 0.0f; gameObject.layer = LayerMask.NameToLayer("Ignore Raycast"); // Register to taunt events TauntEventHandler tauntCb = (sender, args) => { TauntingTarget = args.TauntingCharacter; }; TauntOverEventHandler tauntOverCb = (sender, args) => { TauntingTarget = null; }; TauntAbility.TauntEvent += tauntCb; TauntAbility.TauntOverEvent += tauntOverCb; OnDestroyCallbacks += () => { TauntAbility.TauntEvent -= tauntCb; TauntAbility.TauntOverEvent -= tauntOverCb; }; }