### Register ImGui Menu Items with ImGuiMenuAttribute Source: https://github.com/skaidd/imguiunityeditor/blob/main/README.md The ImGuiMenuAttribute is used to register ImGui windows and scene overlays within the Unity Editor's menu system. It allows specifying a menu path and a priority for ordering. ```csharp [ImGuiMenu("Window/Path", priority: 100, shortcut: "#k")] ``` -------------------------------- ### Customize ImGui Styling with ImGuiObjectStyle Source: https://github.com/skaidd/imguiunityeditor/blob/main/README.md ImGuiObjectStyle provides options for customizing the appearance of ImGui interfaces. This includes applying predefined themes like DarkTheme or manually setting color properties. ```csharp window.SetStyle(); // or window.Style.Colors.WindowBg = new Color(0.2f, 0.2f, 0.2f, 1.0f); ``` -------------------------------- ### Create Custom ImGui Editor Windows with ImGuiEditorWindow Source: https://github.com/skaidd/imguiunityeditor/blob/main/README.md Inherit from ImGuiEditorWindow to create custom editor windows powered by ImGui. The Draw method is overridden to define the UI content within the ImGui window. ```csharp using ImGuiUnityEditor; [ImGuiMenu("ImGui/ExampleWindow")] public class MyCustomWindow : ImGuiEditorWindow { public override void Draw() { ImGui.Begin("Window"); ImGui.Text("Hello ImGui!"); ImGui.End(); } } ``` -------------------------------- ### Render Unity Objects with ImGuiUnity Source: https://github.com/skaidd/imguiunityeditor/blob/main/README.md ImGuiUnity offers utilities for rendering Unity-specific objects such as Texture2D, RenderTexture, and Sprite within ImGui interfaces. It can be used directly or as an extension method. ```csharp // Display a texture ImGuiUnity.Image(myTexture2D, new Vector2(100, 100)); // Or as an extension method myTexture2D.ImGuiImage(new Vector2(100, 100)); ``` -------------------------------- ### Embed ImGui in Unity Scene View with ImGuiSceneView Source: https://github.com/skaidd/imguiunityeditor/blob/main/README.md ImGuiSceneView allows embedding ImGui interfaces directly into Unity's Scene View. The Active method determines if the overlay is visible, and the Draw method defines its content. ```csharp using ImGuiUnityEditor; using UnityEditor; [ImGuiMenu("ImGui/ExampleSceneOverlay")] public class MySceneOverlay : ImGuiSceneView { public override bool Active() { return Selection.activeGameObject != null; } public override void Draw() { ImGui.Begin("Scene Tools"); ImGui.Text("Position: " + Selection.activeTransform?.position); ImGui.End(); } } ``` -------------------------------- ### Enable Automatic Serialization with ImGuiSerializedField Source: https://github.com/skaidd/imguiunityeditor/blob/main/README.md The ImGuiSerializedField attribute automatically handles the saving of fields within ImGui components. Fields marked with this attribute will have their values persisted. ```csharp [ImGuiSerializedField] private string username = "Default"; [ImGuiSerializedField] private Vector3 position; ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.