void FreeButton(PaginationButton button) { button.gameObject.SetActive(false); button.Button.onClick.RemoveAllListeners(); // No object pooling at edit-time if (!Application.isPlaying) { DestroyImmediate(button.gameObject); } }
PaginationButton GetButtonFromPool(PaginationButton.eButtonType buttonType) { PaginationButton button = null; if (Application.isPlaying) { if (!buttonPool.ContainsKey(buttonType)) { buttonPool.Add(buttonType, new List <PaginationButton>()); } button = buttonPool[buttonType].FirstOrDefault(b => b != null && !b.gameObject.activeSelf); } if (button == null) { PaginationButton template = null; switch (buttonType) { case PaginationButton.eButtonType.CurrentPage: template = ButtonTemplate_CurrentPage; break; case PaginationButton.eButtonType.OtherPages: template = ButtonTemplate_OtherPages; break; case PaginationButton.eButtonType.DisabledPage: template = ButtonTemplate_DisabledPage ?? ButtonTemplate_OtherPages; break; } button = Instantiate(template) as PaginationButton; if (Application.isPlaying) { buttonPool[buttonType].Add(button); } } return(button); }