конструкция using и работа с GUI методами Begin/End
Добавлено: 02 май 2010, 16:19
Мучился я мучился и решил написать классы обертки для работы с методами GUILayout.BeginXXX и GUILayout.EndXXX. Проблема состоит в том, что при написании множества вложенных конструкций Begin/End часто забываешь их закрывать и начинаешь путаться что к чему относится. В общем решение было простое. Написал я несколько классов оберток:
А далее их использование упрощает и структурирует код:
Преимущества: структурированный код без необходимости закрывать блоки, они закрываются сами при выходе из блока using
Синтаксис:
Используется 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();
}
}
{
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))) ...;
}
{
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