{"id":25731194,"url":"https://github.com/dcfapixels/unity-debugx","last_synced_at":"2026-04-18T03:31:18.416Z","repository":{"id":279063324,"uuid":"937076816","full_name":"DCFApixels/Unity-DebugX","owner":"DCFApixels","description":"A multifunctional, extensible, and high-performance Gizmos drawing utility for Unity. It works both in the editor and in the build, and drawing can be done both in OnDrawGizmos and in Update.","archived":false,"fork":false,"pushed_at":"2026-02-02T03:14:18.000Z","size":330,"stargazers_count":173,"open_issues_count":1,"forks_count":11,"subscribers_count":5,"default_branch":"main","last_synced_at":"2026-02-02T14:29:19.768Z","etag":null,"topics":["debug","debugger","gizmo","gizmos","unity","unity3d"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DCFApixels.png","metadata":{"files":{"readme":"README-RU.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-02-22T09:23:17.000Z","updated_at":"2026-02-02T10:59:36.000Z","dependencies_parsed_at":"2025-04-08T03:25:56.189Z","dependency_job_id":"2a370904-5a82-415d-a3b2-1f1a69523a88","html_url":"https://github.com/DCFApixels/Unity-DebugX","commit_stats":null,"previous_names":["dcfapixels/unity-debugx"],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/DCFApixels/Unity-DebugX","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DCFApixels%2FUnity-DebugX","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DCFApixels%2FUnity-DebugX/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DCFApixels%2FUnity-DebugX/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DCFApixels%2FUnity-DebugX/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DCFApixels","download_url":"https://codeload.github.com/DCFApixels/Unity-DebugX/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DCFApixels%2FUnity-DebugX/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31955597,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T00:39:45.007Z","status":"online","status_checked_at":"2026-04-18T02:00:07.018Z","response_time":103,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["debug","debugger","gizmo","gizmos","unity","unity3d"],"created_at":"2025-02-26T02:37:24.091Z","updated_at":"2026-04-18T03:31:18.403Z","avatar_url":"https://github.com/DCFApixels.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n![image](https://github.com/user-attachments/assets/a3b34566-2423-4418-8a74-1369b0c268f2)\n\n\u003cp align=\"center\"\u003e\n\u003cimg alt=\"Version\" src=\"https://img.shields.io/github/package-json/v/DCFApixels/Unity-DebugX?style=for-the-badge\u0026color=ff3530\"\u003e\n\u003cimg alt=\"License\" src=\"https://img.shields.io/github/license/DCFApixels/Unity-DebugX?color=ff3530\u0026style=for-the-badge\"\u003e\n\u003c/p\u003e\n\n\n\n# Unity-DebugX\n\n\u003ctable\u003e\n  \u003ctr\u003e\u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd colspan=\"3\"\u003eReadme Languages:\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd nowrap width=\"100\"\u003e\n      \u003ca href=\"https://github.com/DCFApixels/Unity-DebugX/blob/main/README-RU.md\"\u003e\n        \u003cimg src=\"https://github.com/user-attachments/assets/3c699094-f8e6-471d-a7c1-6d2e9530e721\"\u003e\u003c/br\u003e\n        \u003cspan\u003eРусский\u003c/span\u003e\n      \u003c/a\u003e  \n    \u003c/td\u003e\n    \u003ctd nowrap width=\"100\"\u003e\n      \u003ca href=\"https://github.com/DCFApixels/Unity-DebugX\"\u003e\n        \u003cimg src=\"https://github.com/user-attachments/assets/30528cb5-f38e-49f0-b23e-d001844ae930\"\u003e\u003c/br\u003e\n        \u003cspan\u003eEnglish\u003c/span\u003e\n      \u003c/a\u003e  \n    \u003c/td\u003e\n    \u003ctd nowrap width=\"100\"\u003e\n      \u003ca href=\"https://github.com/DCFApixels/Unity-DebugX/blob/main/README-ZH.md\"\u003e\n        \u003cimg src=\"https://github.com/user-attachments/assets/8e598a9a-826c-4a1f-b842-0c56301d2927\"\u003e\u003c/br\u003e\n        \u003cspan\u003e中文\u003c/span\u003e\n      \u003c/a\u003e  \n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003c/br\u003e\n\nМногофункциональная, расширяемая и производительная утилита рисования Gizmos для Unity. Работает как в редакторе так и в сборке, а рисовать можно как в `OnDrawGizmos` так и в `Update`. Поддерживается HDRP, URP и BRP, но в BRP не поддерживается отрисовка в `OnDrawGizmos`.\n\nСинтаксис:\n```c#\nDebugX.Draw(duration, color).*Gizmo Function*(...);\n```\n\n![image](https://github.com/user-attachments/assets/af09b0e3-8710-4461-99ce-a5f868b25260)\n\n\u003cbr\u003e\n\n## Оглавление\n- [Установка](#установка)\n- [Базовый API](#api)\n- [Настройки](#настройки)\n- [Расширение API](#кастомный-gizmo)\n- [Загрузка статических ассетов](#загрузка-статических-ассетов)\n- [Define Symbols](#define-symbols)\n- [Проекты использующие DebugX](#Проекты-использующие-DebugX)\n- [Лицензия](#Лицензия)\n\n\u003cbr\u003e\n\n# Установка\nСемантика версионирования - [Открыть](https://gist.github.com/DCFApixels/e53281d4628b19fe5278f3e77a7da9e8#file-dcfapixels_versioning_ru-md)\n### Unity-Package\nПоддерживается установка в виде Unity-модуля, достаточно добавить [в PackageManager](https://docs.unity3d.com/2023.2/Documentation/Manual/upm-ui-giturl.html)  этот Git-URL :\n```\nhttps://github.com/DCFApixels/Unity-DebugX.git\n```\nИли скопировать в `Packages/manifest.json` эту строчку:\n```\n\"com.dcfa_pixels.debugx\": \"https://github.com/DCFApixels/Unity-DebugX.git\"\n```\n### В виде исходников\nПакет так же может быть напрямую скопирован в папку проекта.\n\n\u003c/br\u003e\n\n# Базовый API\n\nОбщий синтаксис рисования заготовленных Gizmo:\n```c#\nDebugX.Draw(duration, color).*Gizmo Function*(...);\n```\n\u003c/br\u003e\n\nСреди заготовленных Gizmo есть разные вариации примитивов, линий, точек и текст. Пример некоторых Gizmo:\n```c#\n// Рисует обычную линию аналогично Debug.DrawLine(...).\n// Показываться линия будет в течении секунды и красного цвета.\nDebugX.Draw(1, Color.red).Line(startPoint, endPoint);\n```\n```c#\n// Рисует куб, но всего один кадр и желтого цвета.\nDebugX.Draw(Color.yellow).Cube(center, rotation, size);\n```\n```c#\n// Рисует сферу.\nDebugX.Draw(Color.yellow).Cube(center, radius);\n```\n```c#\n// Рисует точку, точка имеет screen space размер. \nDebugX.Draw(Color.yellow).Dot(startPoint, endPoint);\n```\n```c#\n// Рисует текст. Текст так же может показываться в течении заданного времени.\nDebugX.Draw(1, Color.red).Text(center, text);\n// Для расширенной настройки отображения используется DebugXTextSettings.\nDebugX.Draw(Color.yellow).Text(center, text, DebugXTextSettings.Default.SetBackgroundColor(Color.black));\n```\n\u003c/br\u003e\n\n\nНа случай если не хватает заготовленных примитивов есть методы для рисования кастомных меша и материала:\n```c#\n//Рисования любого меша lit материалом. Без GPU instancing. \nDebugX.Draw(...).Mesh(mesh, pos, rot, sc);\n//UnlitMesh - меш с unlit материалом\n//WireMesh - меш с wireframe материалом\n```\n```c#\n//Рисования статического меша lit материалом. В режиме GPU instancing. \nDebugX.Draw(...).Mesh\u003cIStaticMesh\u003e(pos, rot, sc);\n//UnlitMesh\u003cIStaticMesh\u003e - меш с unlit материалом\n//WireMesh\u003cIStaticMesh\u003e - меш с wireframe материалом\n```\n```c#\n//Рисования статического меша статическим материалом. В режиме GPU instancing. \nDebugX.Draw(...).Mesh\u003cIStaticMesh, IStaticMat\u003e(pos, rot, sc);\n```\n\u003c/br\u003e\n\nДля оптимизации отрисовки используются статические данные:\n```c#\n// Статический меш. Обязателен для отрисовки с GPU instancing. \npublic struct SomeMesh : IStaticMesh\n{\n    public Mesh GetMesh() =\u003e StaticStorage.SomeMesh;\n}\n```\n```c#\n// Статический материал. \npublic struct SomeMesh : IStaticMesh\n{\n    // Контроль порядка выполнения отрисовки. \n    public int GetExecuteOrder() =\u003e 100;\n    public Mesh GetMaterial() =\u003e StaticStorage.SomeMaterial;\n} \n```\n\u003e В примере StaticStorage это условная реализация статического хранилища ассетов. Так как в Unity статические данные нельзя заполнять через инспектор, решение этой проблемы описано в главе [Загрузка статических ассетов](#загрузка-статических-ассетов).\n\n\u003cbr\u003e\n\n# Настройки\nОкно настроек \"Tools -\u003e DebugX -\u003e Settings\":\n\n![image](https://github.com/user-attachments/assets/dee3954a-1c8a-442c-a4bb-d2c710e065a4)\n\n\u003cbr\u003e\n\n# Расширение API\nСамый простой вариант это создание метода расширения который комбинирует заготовленные гизмо, например:\n```c#\npublic static class SomeGizmoExtensions\n{\n    public static DebugX.DrawHandler Distance(this DebugX.DrawHandler self, Vector3 start, Vector3 end)\n    {\n        // Рисуем линию.\n        self.Line(start, end);\n        // Рисуем текст посреди линии который показывает длину линии.\n        self.Text(Vector3.Lerp(start, end, 0.5f), Vector3.Distance(start, end), DebugXTextSettings.ScreenSpace.SetAnchor(TextAnchor.UpperCenter));\n        // для поддержки Method Chaining синтаксиса.\n        return self;\n    }\n}\n```\n\u003e Так же можно использовать методы `Mesh` для создания методов рисования других примитивов.\n\nРасширенная реализация Gizmo, на случай нехватки встроенных методов отрисовки:\n```c#\npublic readonly struct SomeGizmo : IGizmo\u003cSomeGizmo\u003e\n{\n    // Данные. \n\n    public SomeGizmo(/*...*/)\n    {\n        // Заполнение данных.\n    } \n    \n    public IGizmoRenderer\u003cSomeGizmo\u003e RegisterNewRenderer() =\u003e new Renderer();\n    private class Renderer : IGizmoRenderer\u003cSomeGizmo\u003e\n    {\n        // Контроль порядка выполнения рендереров. \n        public int ExecuteOrder =\u003e 0; //можно использовать default(SomeMat).GetExecutuonOrder();\n        // Флаг системе о способе оптимизации.\n        // Если метод рисовки или подготовки зависят от текущей камеры, то false，иначе true.\n        // Если не уверены то выбирайте false. \n        public bool IsStaticRender =\u003e false;\n\n        // Подготовка данных перед рендером, тут можно выполнить дополнительные расчеты или запланировать Job. \n        public void Prepare(Camera camera, GizmosList\u003cSomeGizmo\u003e list) \n        {\n            foreach (var item in list)\n            {\n                //... \n            }\n        } \n\n        // Рендер, тут можно напрямую воспользоваться графическим API или добавить команду в CommandBuffer. \n        public void Render(Camera camera, GizmosList\u003cSomeGizmo\u003e list, CommandBuffer cb)\n        {\n            foreach (var item in list)\n            {\n                //... \n            }\n        }\n    }\n}\n```\n```c#\n// Создание метода расширения. \npublic static class SomeGizmoExtensions\n{\n    public static DebugX.DrawHandler SomeGizmo(this DebugX.DrawHandler self, /*...*/) \n    {\n        self.Gizmo(new SomeGizmo(/*...*/);\n        return self;\n    }\n}\n```\n\n\u003cbr\u003e\n\n# Загрузка статических ассетов \nДля загрузки имеется утилита `DebugXUtility.LoadStaticData(...);`. \n\n1) Сначала создаем хранилище для ассетов. \n```c#\npublic readonly struct SomeAssets\n{\n    public readonly Mesh SomeMesh;\n    public readonly Material SomeMaterial;\n} \n```\n2) Далее необходимо создать префаб со списком ассетов. Каждый дочерний GameObject префаба рассматривается как один ассет, а его имя должно совпадать с полем в которое будет загружаться ассет. Для загрузки мешей в GameObject необходимо добавить компонент MeshFilter с ссылкой на нужный меш. Для загрузки материала нужен любой компонент унаследованный от Renderer с заданным материалом. Сам префаб должен быть расположен в папке Resources. \n \n![image](https://github.com/user-attachments/assets/191dd337-81d5-43ff-b92e-e8b0927841f9)\n\n3) После подготовки хранилища и префаба-списка можно загружать \n```c#\nSomeAssets assets = DebugXUtility.LoadStaticData(new SomeAssets(), \"SomeAssets\");\n// Готово. \n```\n\u003e Пример как с этой утилитой работать можно посмотреть в исходниках в файле `DebugXAssets.cs`.\n\n\u003cbr\u003e\n\n# Define Symbols\nВсе Define Symbols можно менять в окне настроек.\n+ `DEBUGX_DISABLE_INBUILD` - По умолчанию Gizmo будут рисовать в сборке проекта, этот дефайн отключает рисование.\n+ `DEBUGX_ENABLE_PHYSICS2D` - Включает Gizmos для Physics2D.\n+ `DEBUGX_ENABLE_PHYSICS3D` - Включает Gizmos для Physics3D.\n\n\u003cbr\u003e\n\n# Проекты использующие DebugX\n\n\u003ctable\u003e\n  \u003ctr\u003e\u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003ca href=\"https://avastrad.itch.io/clear-and-move\"\u003e\n        Clear And Move\n        \u003cimg src=\"https://github.com/user-attachments/assets/9292c220-fc16-4709-b978-02099b5f95a5\"\u003e\n      \u003c/a\u003e \n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003ca href=\"https://play.google.com/store/apps/details?id=com.ZlodeyStudios.OrdersMatter\"\u003e\n        Order matters\n        \u003cimg src=\"https://github.com/user-attachments/assets/c55b2647-9b6e-4145-98ff-c3d094600fa1\"\u003e\n      \u003c/a\u003e \n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003ca href=\"https://dcfapixels.github.io/Project8.html\"\u003e\n        Crystal Siege\n        \u003cimg src=\"https://github.com/user-attachments/assets/1aa60a50-2668-4919-aca9-d6d2b980c3dd\"\u003e\n      \u003c/a\u003e \n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003cspan\u003e\n        ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ\n        \u003cimg tabindex=\"-1\" src=\"https://github.com/user-attachments/assets/3fa1ca6d-29f6-43e6-aafe-cc9648d20490\" alt=\"screenshot\"\u003e\n      \u003c/span\u003e \n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\n# Лицензия\n\nMIT Лицензия: [https://raw.githubusercontent.com/DCFApixels/Unity-DebugX/refs/heads/main/LICENSE.md](https://raw.githubusercontent.com/DCFApixels/Unity-DebugX/refs/heads/main/LICENSE.md)\n\n\u003c/br\u003e\n\u003c/br\u003e\n\u003c/br\u003e\n\u003c/br\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdcfapixels%2Funity-debugx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdcfapixels%2Funity-debugx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdcfapixels%2Funity-debugx/lists"}