Страница 1 из 1

конструкция using и работа с GUI методами Begin/End

СообщениеДобавлено: 02 май 2010, 16:19
PAX
Мучился я мучился и решил написать классы обертки для работы с методами GUILayout.BeginXXX и GUILayout.EndXXX. Проблема состоит в том, что при написании множества вложенных конструкций Begin/End часто забываешь их закрывать и начинаешь путаться что к чему относится. В общем решение было простое. Написал я несколько классов оберток:
Синтаксис:
Используется csharp
  public class GUILayoutScrollView : IDisposable
  {
    public GUILayoutScrollView(ref Vector2 scroll)
    {
      scroll = GUILayout.BeginScrollView(scroll);
    }

    public void Dispose()
    {
      GUILayout.EndScrollView();
    }
  }

  public class GUILayoutVertical : IDisposable
  {
    public GUILayoutVertical()
    {
      GUILayout.BeginVertical();
    }

    public void Dispose()
    {
      GUILayout.EndVertical();
    }
  }

  public class GUILayoutHorizontal : IDisposable
  {
    public GUILayoutHorisontal()
    {
      GUILayout.BeginHorizontal();
    }

    public void Dispose()
    {
      GUILayout.EndHorizontal();
    }
  }


А далее их использование упрощает и структурирует код:

Синтаксис:
Используется csharp
      using (new GUILayoutHorizontal())
      {
        if (GUILayout.Button("Кнопка1", GUILayout.Height(30.0F))) ...;

        GUILayout.Space(5.0F);

        if (GUILayout.Button("Кнопка1", GUILayout.Height(30.0F))) ...;

        GUILayout.Space(5.0F);

        if (GUILayout.Button("Кнопка1", GUILayout.Height(30.0F))) ...;
      }


Преимущества: структурированный код без необходимости закрывать блоки, они закрываются сами при выходе из блока using :)

Re: конструкция using и работа с GUI методами Begin/End

СообщениеДобавлено: 02 май 2010, 16:48
gnoblin
Модно (3A4OT)

Пости такие интересные решения почаще \m/

Re: конструкция using и работа с GUI методами Begin/End

СообщениеДобавлено: 02 май 2010, 17:12
Neodrop
Изящно, блин. Мне тоже хотелось сделать так же, но не пришла в голову идея с Dispose ! Классно!

(3A4OT)

Re: конструкция using и работа с GUI методами Begin/End

СообщениеДобавлено: 05 май 2018, 04:00
iq110
Только лучше сделать структуру, а то едитор будет много памяти жевать.