2016-11-24 4 views
0

У меня есть 15 кнопок на моем экране. В случае OnClick я выборки кнопки и скрытие этой кнопки с помощьюпоказать скрытую кнопку в единстве с помощью C#

EventSystem.current.currentSelectedGameObject.SetActive(false); 

В конце я должен снова показать кнопки, поэтому я использую

for (int i = 0; i < 15; i++) 
{ 
    tag1 = "Button" + (i + 1); 
    GameObject.FindGameObjectWithTag(tag1).SetActive(true); 
    Debug.Log("done"); 
} 

Loop дает ошибку, потому что это не удалось найти объекты, которые были скрыты или setActive (false) из других источников (unity forum) Я вижу то же самое решение, но не знаю, почему он не работает в моем случае.

+0

Был бы легче получить ссылку на эту кнопку в сценарии и просто вызовите 'mebutton.SetActive (истину)' –

+0

кнопки не содержит SetActive свойства @ m.rogalski – phpdroid

+0

@JamesHughes я попробовал реактивировать все, что знал, что Button11 был инактивирован раньше, и он напечатал «сделано» 10 раз, только проблема не способна «найти объект, который был скрыт» – phpdroid

ответ

0

Поскольку вы хотите найти объекты по тегу и скрытые элементы не могут быть найдены с использованием метода FindGameObjectWithTag. Вы можете использовать этот метод:

var allObjects = GameObject.FindObjectsOfType(typeof(GameObject)) as GameObject[]; // this will grab all GameObjects from the current scene! 
foreach(GameObejct obj in allObjects) { 
    if(new Regex(@"^Button(?'number'\d{1,2})").IsMatch(obj.Tag)) { 
     obj.SetActive(true); 
     Debug.Log("done"); 
    } 
} 
+0

InvalidCastException : Невозможно применить тип источника к типу назначения. здесь >>> foreach (GameObejct obj in allObjects) – phpdroid

+0

[FindObjectsOfType] (https://docs.unity3d.com/ScriptReference/Object.FindObjectsOfType.html) и см. обновленный ответ. –

+0

Заработано 195 раз, но все же невидимые кнопки не отображаются – phpdroid

Смежные вопросы