Здравствуйте, моя проблема в том что кнопка работает как то не правильно, она должна выполнять, при нажатии первый раз - одно действие, а при следующем - другое. Но она при первом нажатии выполняет первое действие, при втором нажатии тоже первое действие, при третьем нажатии второе действие, после чего цикл повторяется. С точки зрения логики, мне кажется что, всё правильно, но я не понимаю в чем проблема. Код:
Код
using UnityEngine; using UnityEditor; using System.Collections; using System.Collections.Generic;
[ExecuteInEditMode] [CustomEditor(typeof(ComponentsOldManager))] public class ComponentsManagerOldEditor : Editor { bool isShowed = true;
string text; string s = "True"; string h = "False";
[ExecuteInEditMode] public sealed class ComponentsOldManager : MonoBehaviour {
public Entity entity;
public void ShowComponents(bool boolean) { Component[] c = GetComponents<Component> (); for (int i = 0; i < c.Length; i++) if (!(c [i] is Transform) && !(c [i] is ComponentsOldManager) && !(c [i] is Entity)) { if(boolean) c[i].hideFlags = HideFlags.None; else c[i].hideFlags = HideFlags.HideInInspector; } } }
Просто создайте объект, и поместите в него этот компонент, и ещё какой нибудь, и нажмите кнопку.
Путем комментирования кода, я выяснил что проблема в этом куске кода:
Код
Component[] c = GetComponents<Component> (); for (int i = 0; i < c.Length; i++) if (!(c [i] is Transform) && !(c [i] is ComponentsOldManager) && !(c [i] is Entity)) { if(boolean) c[i].hideFlags = HideFlags.None; else c[i].hideFlags = HideFlags.HideInInspector; }
Добавлено (04 октября 2015, 20:39) --------------------------------------------- Нашел причину, переменная isShowed должна быть в class ComponentsOldManager.