is it possible to write the function below in just one foreach loop?
i have already try it with List<object>
but i do not bring this to work.
private void SoundsOnButtons()
{
Button[] buttons = Resources.FindObjectsOfTypeAll<Button>();
Toggle[] toggles = Resources.FindObjectsOfTypeAll<Toggle>();
foreach (Button obj in buttons)
{
obj.gameObject.AddComponent<EventTrigger>();
EventTrigger.Entry eventEnter = new EventTrigger.Entry();
eventEnter.eventID = EventTriggerType.PointerEnter;
eventEnter.callback.AddListener((eventData) => {
Sound.PlaySfxOneShot(Sound.GiveSfxSound(7));
});
obj.GetComponent<EventTrigger>().triggers.Add(eventEnter);
}
foreach (Toggle obj in toggles)
{
obj.gameObject.AddComponent<EventTrigger>();
EventTrigger.Entry eventEnter = new EventTrigger.Entry();
eventEnter.eventID = EventTriggerType.PointerEnter;
eventEnter.callback.AddListener((eventData) => {
Sound.PlaySfxOneShot(Sound.GiveSfxSound(7));
});
obj.GetComponent<EventTrigger>().triggers.Add(eventEnter);
}
}
thx for help. pezezzle
---------------EDIT---------------
Thanky you @derHugo this was exactly what i looking for but why is this not possible?:
private void AddToList<T>() where T : Selectable
{
List<T> list = new List<T>();
Button[] buttons = Resources.FindObjectsOfTypeAll<Button>();
Toggle[] toggles = Resources.FindObjectsOfTypeAll<Toggle>();
list.AddRange(buttons); // Here i get a error cannot convert !
list.AddRange(toggles); // Here i get a error cannot convert !
foreach (var obj in list)
{
obj.gameObject.AddComponent<EventTrigger>();
EventTrigger.Entry eventEnter = new EventTrigger.Entry();
eventEnter.eventID = EventTriggerType.PointerEnter;
eventEnter.callback.AddListener((eventData) => {
Sound.PlaySfxOneShot(Sound.GiveSfxSound(7));
});
obj.GetComponent<EventTrigger>().triggers.Add(eventEnter);
}
}