Aucune description
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

EventTriggerRemoveDuringExecution.cs 1.5KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. using NUnit.Framework;
  2. using UnityEngine;
  3. using UnityEngine.EventSystems;
  4. public class EventTriggerRemoveDuringExecution
  5. {
  6. [Test]
  7. [Description("ArgumentOutOfRange Exception is thrown when removing handler in callback in EventTrigger (case 1401557)")]
  8. public void EventTrigger_DoesNotThrowExceptionWhenRemovingEventDuringExecution()
  9. {
  10. var go = new GameObject();
  11. var eventTrigger = go.AddComponent<EventTrigger>();
  12. var eventSystem = go.AddComponent<EventSystem>();
  13. var entry1 = new EventTrigger.Entry { eventID = EventTriggerType.PointerDown };
  14. var entry2 = new EventTrigger.Entry { eventID = EventTriggerType.PointerDown };
  15. bool executed1 = false;
  16. bool executed2 = false;
  17. entry1.callback.AddListener(e =>
  18. {
  19. executed1 = true;
  20. eventTrigger.triggers.Remove(entry2);
  21. });
  22. entry2.callback.AddListener(e => executed2 = true);
  23. eventTrigger.triggers.Add(entry1);
  24. eventTrigger.triggers.Add(entry2);
  25. Assert.DoesNotThrow(() => eventTrigger.OnPointerDown(new PointerEventData(eventSystem)));
  26. Assert.True(executed1, "Expected Event 1 to be called but it was not.");
  27. Assert.False(executed2, "Expected Event 2 to not be called as it was removed by event 1.");
  28. Assert.That(eventTrigger.triggers, Does.Not.Contains(entry2));
  29. Assert.That(eventTrigger.triggers, Does.Contain(entry1));
  30. Object.DestroyImmediate(go);
  31. }
  32. }