/// <summary> /// Copies each text and shows each root. /// Hides any options beyond number of option texts. /// /// Assigns option index and button subscribes to selected event. /// </summary> private void PopulateOptions( List <string> optionTexts, OptionView[] optionViews) { int numOptionTexts = optionTexts == null ? 0 : optionTexts.Count; int numOptions = optionViews.Length; Debug.Assert(numOptions >= numOptionTexts, "Expected at least " + numOptions + " option views " + "equal or greater than " + numOptionTexts + " optionTexts." ); if (numOptions < numOptionTexts) { numOptionTexts = numOptions; } for (int optionIndex = 0; optionIndex < numOptionTexts; ++optionIndex) { OptionView optionView = optionViews[optionIndex]; string optionText = optionTexts[optionIndex]; AddListener(optionView, optionText); optionView.optionRoot.SetActive(true); } for (int optionIndex = numOptionTexts; optionIndex < numOptions; ++optionIndex) { OptionView optionView = optionViews[optionIndex]; optionView.optionRoot.SetActive(false); optionView.optionText.text = ""; RemoveListener(optionView); } }
private static void RemoveListener(OptionView optionView) { if (optionView.onThisSelected == null) { return; } if (optionView.optionButton == null) { return; } optionView.optionButton.onClick.RemoveAllListeners(); }
private void AddListener(OptionView optionView, string optionText) { if (optionView.onThisSelected == null || optionView.optionText.text != optionText) { optionView.optionText.text = optionText; optionView.onThisSelected = () => SelectOptionText(optionText); } if (optionView.optionButton == null) { Debug.Assert(optionView.optionButton != null, "Expected option button. optionText=" + optionText, context: optionView.optionRoot ); return; } optionView.optionButton.onClick.RemoveAllListeners(); optionView.optionButton.onClick.AddListener(optionView.onThisSelected); }