{"id":20336768,"url":"https://github.com/zenvin-dev/unityutility","last_synced_at":"2026-02-08T06:37:18.159Z","repository":{"id":198935972,"uuid":"435010494","full_name":"zenvin-dev/UnityUtility","owner":"zenvin-dev","description":"Adds a few base classes to Unity to improve existing Behaviours.","archived":false,"fork":false,"pushed_at":"2024-08-18T18:00:53.000Z","size":68,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-25T18:41:16.086Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zenvin-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2021-12-04T21:15:05.000Z","updated_at":"2024-08-18T18:00:56.000Z","dependencies_parsed_at":null,"dependency_job_id":"c0d00ea4-8dc1-451d-bd7b-6a6444035178","html_url":"https://github.com/zenvin-dev/UnityUtility","commit_stats":null,"previous_names":["xzenvin/unityutility","zenvin-dev/unityutility"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zenvin-dev%2FUnityUtility","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zenvin-dev%2FUnityUtility/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zenvin-dev%2FUnityUtility/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zenvin-dev%2FUnityUtility/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zenvin-dev","download_url":"https://codeload.github.com/zenvin-dev/UnityUtility/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248493022,"owners_count":21113159,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":[],"created_at":"2024-11-14T21:06:46.552Z","updated_at":"2026-02-08T06:37:13.099Z","avatar_url":"https://github.com/zenvin-dev.png","language":"C#","readme":"# UnityUtility\nAdds a few base classes to Unity to improve existing Behaviours.\n\n**Dependencies** \\\nSince Unity cannot handle package-level Git package dependencies, this has to be added manually:\n- Editor Utility: https://github.com/xZenvin/UnityEditorUtility.git\n\n\n### MonoBehavior\n- Class name spelling changed from BE to AE to fit Unity's other naming schemes\n- Added caching for `Transform` component\n- Added implicit conversion from `Transform` and `GameObject` to `MonoBehavior`\n\n### MonoBehaviorAutoInit\nA version of the `MonoBehavior`, which can automatically get components for any contained fields decorated with the `[AutoInit]` attribute.\nGetting components can happen on child or parent objects, or on the object the script is attached to.\nArrays are supported as well.\nIf a component reference is not found, and the target field is denoted as critical, the `MonoBehaviorAutoInit` will disable itself.\n\n### UnityGuid\nA `struct` inspired by [`System.Guid`](https://learn.microsoft.com/en-us/dotnet/api/system.guid?view=net-7.0), which Unity can actually serialize. \\\nFor the sake of displaying it in the inspector more easily (and because I suck at writing bitshift code), the struct encapsulates a byte array, rather than a set of integral numbers.\n\n### UnityNullable\nA `struct` inspired by [`System.Nullable\u003cT\u003e`](https://learn.microsoft.com/en-us/dotnet/api/system.nullable-1?view=net-7.0), which Unity can actually serialize. \\\nUses a custom property drawer to set values to \"null\". Note that drawing nested properties is not currently supported.\n\n### Point\nA `struct` representing a point in a scene. Other than a normal `Vector3`, a `Point` may reference a `Transform` to move about instead of merely being a fixed position. \\\nA custom property drawer allows switching modes between \"Transform\" and \"Vector3\".\n\n### StateQueue and EventBasedStateQueue\n`StateQueue`s can be used declare a value in a central place and have it influenced by multiple parties, without those parties interfering with each other. \\\nThe normal `StateQueue\u003cT\u003e` uses an `interface`-based approach, while the `EventBasedStateQueue` uses callbacks to manipulate its base value. \\\nA queue's base value is serialized (so long as it does not have nested properties). **Note that editor-changes to the base value need to be applied explicitly with a call to the containing queue's `Update()` method**. \\\nBoth types of queue implement `IStateQueue\u003cT\u003e`.\n\n### SerializedTable\n**Not stable. Use at own risk.** \\\nA `class` to associate a value with two arbitrarily typed keys. \\\nCan be serialized and accessed via a custom editor window.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzenvin-dev%2Funityutility","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzenvin-dev%2Funityutility","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzenvin-dev%2Funityutility/lists"}