The Unity Editor is pretty fun to work with, and has a very extendable interface. With just a few lines of code (C# by preference) it's possible to create a customized interface window.
Here is a bare bones example of how to make a custom window in Unity 4.2, and make it do stuff. The example is written in CSharp and does a very simple task, makes a window and tells you the name of whatever you have selected.
// Example Window- Get the name of whatever game object // that is currently selected using UnityEngine; using UnityEditor; public class ExampleWindow : EditorWindow { // Strings string objectName = ""; // Update specific variables // Using the repaint flag, GUI updates are done once, rather than spammed // every frame. private string lastSelected = ""; private bool repaint = true; // This creates a new Menu item where we can access our tool from. [MenuItem("Window/ExampleWindow")] static void Init() { ExampleWindow window = (ExampleWindow)EditorWindow.GetWindow(typeof(ExampleWindow)); } // A Button Function void myFancyFunction() { // Log something to the comments console. Debug.Log("You pressed a fancy button!"); } // This is my actual window private void OnGUI() { // Create a label GUILayout.Label("Select an object in the hierarchy view"); // Create a text field that will update whenever we select a different object EditorGUILayout.TextField("Object Name: ", objectName); // Create a button that calls our fancy function. if (GUI.Button(new Rect(32, 42, 256, 16), "Fancy function!")) { myFancyFunction(); } } private void Update() { if (Selection.activeGameObject && Selection.activeGameObject.name != lastSelected) { objectName = Selection.activeGameObject.name; this.Repaint(); // This is to prevent spamming GUI updates lastSelected = Selection.activeGameObject.name; repaint = true; } else if (Selection.activeGameObject == null && repaint == true) { objectName = "Please Select an Object"; this.Repaint(); // This is to prevent spamming GUI updates repaint = false; lastSelected = ""; } } }All of this results in a window you can then access from Window > ExampleWindow.
No comments:
Post a Comment
Comments?