This package provides you with a set of classes providing extended GUI widgets for Unity -- both for runtime usage and for editor usage --
Widgets (including where they can be used from):
-
AutoSelect TextArea (Runtime & Editor) - A variant of the TextArea that auto-selects all content when the widget gets focus, and which provides length-clamping for the Editor variant.
-
Toolbar (Editor) - Some helpers for drawing toolbars in the same manner Unity itself does.
-
Vertical Split-Panes (Editor) - Vertically stacked split-panes with draggable resizing.
-
Horizontal Split-Panes (Editor) - Horizontally stacked split-panes with draggable resizing.
- Unity 3.1 or 3.0. This will not work on Unity 2.x, or Unity/iPhone 1.x.
Grab the unitypackage and install it into your project:
http://github.com/MrJoy/UnityGUIExtensions.Examples/downloads
OR, if you are using Git for your Unity project, you can add this as a sub-module:
mkdir -p Assets/Editor/
git submodule add git://github.com/MrJoy/UnityGUIExtensions.git Assets/Editor/UnityGUIExtensions
git submodule init
git submodule update
UnityGUIExtensions' Git repo is available on GitHub, which can be browsed at:
http://github.com/MrJoy/UnityGUIExtensions
and cloned with:
git clone git://github.com/MrJoy/UnityGUIExtensions.git
An example Unity project (which refers to this project as a sub-module) is available here:
http://github.com/MrJoy/UnityGUIExtensions.Examples
and can be cloned with:
git clone git://github.com/MrJoy/UnityGUIExtensions.Examples.git
git submodule init
git submodule update
Instead of:
myString = GUILayout.TextArea(myString);
You just do:
myString = GUILayoutAutoSelect.TextArea("uniqueWidgetName", myString);
Variants exist corresponding to all the method signatures of GUI.TextArea, GUILayout.TextArea, EditorGUI.TextArea, and EditorGUILayout.TextArea. Additionally, the EditorGUIExt/EditorGUILayoutExt versions have an additional set of signatures that include the maxLength attribute.
This feature may only be used from editor classes
Simplest possible usage:
public void OnGUI() {
EditorGUILayoutVerticalPanes.Begin();
// Draw your upper pane here.
EditorGUILayoutVerticalPanes.Splitter();
// Draw your lower pane here.
EditorGUILayoutVerticalPanes.End();
}
However, if you wish to exert more control over this, you can specify a configuration for the panes:
private VerticalPaneState paneConfiguration = new VerticalPaneState() {
initialTopPaneHeight = 80,
minPaneHeightTop = 65,
minPaneHeightBottom = 100
};
public void OnGUI() {
EditorGUILayoutVerticalPanes.Begin(paneConfiguration);
// Draw your upper pane here.
EditorGUILayoutVerticalPanes.Splitter();
// Draw your lower pane here.
EditorGUILayoutVerticalPanes.End();
}
This feature may only be used from editor classes
Simplest possible usage:
public void OnGUI() {
EditorGUILayoutHorizontalPanes.Begin();
// Draw your left pane here.
EditorGUILayoutHorizontalPanes.Splitter();
// Draw your right pane here.
EditorGUILayoutHorizontalPanes.End();
}
However, if you wish to exert more control over this, you can specify a configuration for the panes:
private HorizontalPaneState paneConfiguration = new HorizontalPaneState() {
initialLeftPaneWidth = 80,
minPaneWidthLeft = 65,
minPaneWidthRight = 100
};
public void OnGUI() {
EditorGUILayoutHorizontalPanes.Begin(paneConfiguration);
// Draw your left pane here.
EditorGUILayoutHorizontalPanes.Splitter();
// Draw your right pane here.
EditorGUILayoutHorizontalPanes.End();
}
This feature may only be used from editor classes
(Documentation coming soon.)
Copyright (c) 2010 MrJoy, Inc.
Dual licensed under the terms of the MIT X11 or GNU GPL.
If you'd like to contribute to UnityGUIExtensions, I ask that you fork MrJoy/UnityGUIExtensions on GitHub, and push up a topic branch for each feature you add or bug you fix. Then create a pull request and explain what your code does. This allows us to discuss and merge each change separately.