{"id":13664411,"url":"https://github.com/CandyCoded/CandyCoded","last_synced_at":"2025-04-26T01:31:30.563Z","repository":{"id":27908958,"uuid":"102110747","full_name":"CandyCoded/CandyCoded","owner":"CandyCoded","description":"🍭 Custom Unity Components that are delightful","archived":false,"fork":false,"pushed_at":"2024-09-09T10:59:50.000Z","size":1726,"stargazers_count":162,"open_issues_count":7,"forks_count":7,"subscribers_count":14,"default_branch":"main","last_synced_at":"2024-11-05T06:50:45.732Z","etag":null,"topics":["csharp","unity","unity3d","unitypackage"],"latest_commit_sha":null,"homepage":"http://candycoded.xyz","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/CandyCoded.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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},"funding":{"ko_fi":"scottdoxey"}},"created_at":"2017-09-01T12:31:56.000Z","updated_at":"2024-09-09T10:59:54.000Z","dependencies_parsed_at":"2024-09-09T12:45:30.806Z","dependency_job_id":"1c7fdee8-4c27-4064-a7ce-7a94ef02bc0c","html_url":"https://github.com/CandyCoded/CandyCoded","commit_stats":{"total_commits":925,"total_committers":2,"mean_commits":462.5,"dds":0.00108108108108107,"last_synced_commit":"1088f05760b92af4bbadc8760f3962f480543906"},"previous_names":[],"tags_count":39,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CandyCoded%2FCandyCoded","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CandyCoded%2FCandyCoded/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CandyCoded%2FCandyCoded/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CandyCoded%2FCandyCoded/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CandyCoded","download_url":"https://codeload.github.com/CandyCoded/CandyCoded/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224022155,"owners_count":17242712,"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":["csharp","unity","unity3d","unitypackage"],"created_at":"2024-08-02T05:02:55.667Z","updated_at":"2024-11-10T22:30:26.729Z","avatar_url":"https://github.com/CandyCoded.png","language":"C#","funding_links":["https://ko-fi.com/scottdoxey"],"categories":["Open Source Repositories","C#","C\\#"],"sub_categories":["Utilities"],"readme":"# ![CandyCoded](logo.png)\n\n\u003e Custom Unity Components that are delightful\n\n[![Join the chat at https://discord.gg/nNtFsfd](https://img.shields.io/badge/discord-join%20chat-7289DA.svg)](https://discord.gg/nNtFsfd)\n[![npm](https://img.shields.io/npm/v/xyz.candycoded.candycoded)](https://www.npmjs.com/package/xyz.candycoded.candycoded)\n[![License](https://img.shields.io/npm/l/xyz.candycoded.candycoded)](https://github.com/CandyCoded/CandyCoded/blob/main/LICENSE)\n\n## Introduction\n\nCandyCoded is a collection of useful components and extensions for building in Unity. Whether you are building a quick prototype or a production-ready experience, CandyCoded will help you get there.\n\n## Features\n\n- ObservableList object\n- Vector2, Vector3 and Vector4 AnimationCurves objects\n- Transform animation methods\n- Raycast reflect method\n- Custom ScriptableObjects with event handlers\n- Event Profiler editor window\n- EnumMask enum attribute\n- InputManager methods\n- [SaveManager methods](Documentation/3.%20Static%20Methods/SaveManager.md) - [Tutorial](Documentation/6.%20Tutorials/Save%20\u0026%20Load%20ScriptableObjects/README.md)\n- Screenshot methods and editor tools\n\n## Installation\n\n### Direct Install\n\n[Download latest `CandyCoded.unitypackage` or `CandyCoded.dll`](https://github.com/CandyCoded/CandyCoded/releases)\n\n### Unity Package Manager\n\n\u003chttps://docs.unity3d.com/Packages/com.unity.package-manager-ui@2.0/manual/index.html\u003e\n\n#### Git\n\n```json\n{\n  \"dependencies\": {\n    \"xyz.candycoded.candycoded\": \"https://github.com/CandyCoded/CandyCoded.git#v4.4.0\",\n    ...\n  }\n}\n```\n\n#### Scoped UPM Registry\n\n```json\n{\n  \"dependencies\": {\n    \"xyz.candycoded.candycoded\": \"4.4.0\",\n    ...\n  },\n  \"scopedRegistries\": [\n    {\n      \"name\": \"candycoded\",\n      \"url\": \"https://registry.npmjs.com\",\n      \"scopes\": [\"xyz.candycoded\"]\n    }\n  ]\n}\n```\n\n### Include tests\n\n```json\n{\n  \"dependencies\": {\n    ...\n  },\n  \"testables\": [\"xyz.candycoded.candycoded\"]\n}\n```\n\n## Contents\n\n- [Introduction](Documentation/Introduction.md)\n- [Getting Started](Documentation/Getting%20Started.md)\n- [Tutorials](Documentation/6.%20Tutorials/README.md)\n  - [Save \u0026 Load ScriptableObjects](Documentation/6.%20Tutorials/Save%20\u0026%20Load%20ScriptableObjects/README.md)\n- [Objects](Documentation/1.%20Objects/)\n  - [ObservableList](Documentation/1.%20Objects/ObservableList.md)\n    - [Count](Documentation/1.%20Objects/ObservableList.md#count)\n    - [IsReadOnly](Documentation/1.%20Objects/ObservableList.md#isreadonly)\n    - [Add](Documentation/1.%20Objects/ObservableList.md#add)\n    - [AddRange](Documentation/1.%20Objects/ObservableList.md#addrange)\n    - [Clear](Documentation/1.%20Objects/ObservableList.md#clear)\n    - [Contains](Documentation/1.%20Objects/ObservableList.md#contains)\n    - [CopyTo](Documentation/1.%20Objects/ObservableList.md#copyto)\n    - [GetRange](Documentation/1.%20Objects/ObservableList.md#getrange)\n    - [IndexOf](Documentation/1.%20Objects/ObservableList.md#indexof)\n    - [Insert](Documentation/1.%20Objects/ObservableList.md#insert)\n    - [InsertRange](Documentation/1.%20Objects/ObservableList.md#insertrange)\n    - [Pop](Documentation/1.%20Objects/ObservableList.md#pop)\n    - [Random](Documentation/1.%20Objects/ObservableList.md#random)\n    - [Remove](Documentation/1.%20Objects/ObservableList.md#remove)\n    - [RemoveAt](Documentation/1.%20Objects/ObservableList.md#removeat)\n    - [RemoveRange](Documentation/1.%20Objects/ObservableList.md#removerange)\n    - [Shift](Documentation/1.%20Objects/ObservableList.md#shift)\n    - [Shuffle](Documentation/1.%20Objects/ObservableList.md#shuffle)\n    - [Slice](Documentation/1.%20Objects/ObservableList.md#slice)\n    - [Splice](Documentation/1.%20Objects/ObservableList.md#splice)\n    - [Unshift](Documentation/1.%20Objects/ObservableList.md#unshift)\n  - [Vector3AnimationCurve](Documentation/1.%20Objects/Vector3AnimationCurve.md)\n    - [EditKeyframeValue](Documentation/1.%20Objects/Vector3AnimationCurve.md#editkeyframevalue)\n    - [IsLooping](Documentation/1.%20Objects/Vector3AnimationCurve.md#islooping)\n    - [MaxTime](Documentation/1.%20Objects/Vector3AnimationCurve.md#maxtime)\n- [Custom Extensions](Documentation/2.%20Custom%20Extensions/)\n  - [AnimationCurve](Documentation/2.%20Custom%20Extensions/AnimationCurve.md)\n    - [EditKeyframeValue](Documentation/2.%20Custom%20Extensions/AnimationCurve.md#editkeyframevalue)\n    - [IsLooping](Documentation/2.%20Custom%20Extensions/AnimationCurve.md#islooping)\n    - [MaxTime](Documentation/2.%20Custom%20Extensions/AnimationCurve.md#maxtime)\n  - [Array](Documentation/2.%20Custom%20Extensions/Array.md)\n    - [Random](Documentation/2.%20Custom%20Extensions/Array.md#random)\n  - [Camera](Documentation/2.%20Custom%20Extensions/Camera.md)\n    - [ScreenToHighPrecisionViewportPoint](Documentation/2.%20Custom%20Extensions/Camera.md#screentohighprecisionviewportpoint)\n  - [Float](Documentation/2.%20Custom%20Extensions/Float.md)\n    - [NearlyEqual](Documentation/2.%20Custom%20Extensions/Float.md#nearlyequal)\n  - [GameObject](Documentation/2.%20Custom%20Extensions/GameObject.md)\n    - [AddOrGetComponent](Documentation/2.%20Custom%20Extensions/GameObject.md#addorgetcomponent)\n    - [GetLayerMask](Documentation/2.%20Custom%20Extensions/GameObject.md#getlayermask)\n  - [Int](Documentation/2.%20Custom%20Extensions/Int.md)\n    - [Contains](Documentation/2.%20Custom%20Extensions/Int.md#contains)\n  - [LayerMask](Documentation/2.%20Custom%20Extensions/LayerMask.md)\n    - [Contains](Documentation/2.%20Custom%20Extensions/LayerMask.md#contains)\n  - [List](Documentation/2.%20Custom%20Extensions/List.md)\n    - [Chunk](Documentation/2.%20Custom%20Extensions/List.md#chunk)\n    - [Contains](Documentation/2.%20Custom%20Extensions/List.md#contains)\n    - [Permutations](Documentation/2.%20Custom%20Extensions/List.md#permutations)\n    - [Pop](Documentation/2.%20Custom%20Extensions/List.md#pop)\n    - [Random](Documentation/2.%20Custom%20Extensions/List.md#random)\n    - [Shift](Documentation/2.%20Custom%20Extensions/List.md#shift)\n    - [Shuffle](Documentation/2.%20Custom%20Extensions/List.md#shuffle)\n    - [Slice](Documentation/2.%20Custom%20Extensions/List.md#slice)\n    - [Splice](Documentation/2.%20Custom%20Extensions/List.md#splice)\n    - [Unshift](Documentation/2.%20Custom%20Extensions/List.md#unshift)\n  - [Quaternion](Documentation/2.%20Custom%20Extensions/Quaternion.md)\n    - [SnapRotation](Documentation/2.%20Custom%20Extensions/Quaternion.md#snaprotation)\n  - [String](Documentation/2.%20Custom%20Extensions/String.md)\n    - [Nicify](Documentation/2.%20Custom%20Extensions/String.md#nicify)\n  - [Transform](Documentation/2.%20Custom%20Extensions/Transform.md)\n    - [GetChildrenByName](Documentation/2.%20Custom%20Extensions/Transform.md#getchildrenbyname)\n    - [LookAt2D](Documentation/2.%20Custom%20Extensions/Transform.md#lookat2d)\n    - [RotateWithInputDelta](Documentation/2.%20Custom%20Extensions/Transform.md#rotatewithinputdelta)\n  - [Vector3](Documentation/2.%20Custom%20Extensions/Vector3.md)\n    - [NearlyEquals](Documentation/2.%20Custom%20Extensions/Vector3.md#nearlyequals)\n- [Static Methods](Documentation/3.%20Static%20Methods/)\n  - [Animate](Documentation/3.%20Static%20Methods/Animate.md)\n    - [Fade](Documentation/3.%20Static%20Methods/Animate.md#fade)\n    - [MoveTo](Documentation/3.%20Static%20Methods/Animate.md#moveto)\n    - [Position](Documentation/3.%20Static%20Methods/Animate.md#position)\n    - [PositionRelative](Documentation/3.%20Static%20Methods/Animate.md#positionrelative)\n    - [RotateTo](Documentation/3.%20Static%20Methods/Animate.md#rotateto)\n    - [Rotation](Documentation/3.%20Static%20Methods/Animate.md#rotation)\n    - [ScaleRelative](Documentation/3.%20Static%20Methods/Animate.md#scalerelative)\n    - [Scale](Documentation/3.%20Static%20Methods/Animate.md#scale)\n    - [ScaleTo](Documentation/3.%20Static%20Methods/Animate.md#scaleto)\n    - [Stop](Documentation/3.%20Static%20Methods/Animate.md#stop)\n    - [StopAll](Documentation/3.%20Static%20Methods/Animate.md#stopall)\n  - [Calculation](Documentation/3.%20Static%20Methods/Calculation.md)\n    - [ParentBounds](Documentation/3.%20Static%20Methods/Calculation.md#parentbounds)\n  - [Debugger](Documentation/3.%20Static%20Methods/Debugger.md)\n    - [DrawLines](Documentation/3.%20Static%20Methods/Debugger.md#drawlines)\n  - [InputMangager](Documentation/3.%20Static%20Methods/InputMangager.md)\n    - [GetInputDown](Documentation/3.%20Static%20Methods/InputMangager.md#getinputdown)\n    - [GetInputPosition](Documentation/3.%20Static%20Methods/InputMangager.md#getinputposition)\n    - [GetInputUp](Documentation/3.%20Static%20Methods/InputMangager.md#getinputup)\n    - [GetMouseButtonDown](Documentation/3.%20Static%20Methods/InputMangager.md#getmousebuttondown)\n    - [GetMouseButtonUp](Documentation/3.%20Static%20Methods/InputMangager.md#getmousebuttonup)\n    - [GetMousePosition](Documentation/3.%20Static%20Methods/InputMangager.md#getmouseposition)\n    - [GetActiveTouch](Documentation/3.%20Static%20Methods/InputMangager.md#getactivetouch)\n    - [GetTouchDown](Documentation/3.%20Static%20Methods/InputMangager.md#gettouchdown)\n    - [GetTouchPosition](Documentation/3.%20Static%20Methods/InputMangager.md#gettouchposition)\n    - [GetTouchUp](Documentation/3.%20Static%20Methods/InputMangager.md#gettouchup)\n    - [RaycastToGameObject](Documentation/3.%20Static%20Methods/InputMangager.md#raycasttogameobject)\n  - [Materials](Documentation/3.%20Static%20Methods/Materials.md)\n    - [GetMaterialsInChildren](Documentation/3.%20Static%20Methods/Materials.md#getmaterialsinchildren)\n    - [SetColorAlpha](Documentation/3.%20Static%20Methods/Materials.md#setcoloralpha)\n  - [Math](Documentation/3.%20Static%20Methods/Math.md)\n    - [Clerp](Documentation/3.%20Static%20Methods/Math.md#clerp)\n  - [Raycast](Documentation/3.%20Static%20Methods/Raycast.md)\n    - [Reflect](Documentation/3.%20Static%20Methods/Raycast.md#reflect)\n  - [Runner](Documentation/3.%20Static%20Methods/Runner.md)\n  - [SaveManager](Documentation/3.%20Static%20Methods/SaveManager.md)\n    - [SaveData](Documentation/3.%20Static%20Methods/SaveManager.md#savedata)\n    - [LoadData](Documentation/3.%20Static%20Methods/SaveManager.md#loaddata)\n    - [DeleteData](Documentation/3.%20Static%20Methods/SaveManager.md#deletedata)\n  - [Screenshot](Documentation/3.%20Static%20Methods/Screenshot.md)\n    - [Save](Documentation/3.%20Static%20Methods/Screenshot.md#save)\n    - [SaveTransparent](Documentation/3.%20Static%20Methods/Screenshot.md#savetransparent)\n- [ScriptableObject](Documentation/4.%20ScriptableObject/)\n  - [AudioPool](Documentation/4.%20ScriptableObject/AudioPool.md)\n  - [Bool](Documentation/4.%20ScriptableObject/Bool.md)\n  - [CustomGenericScriptableObject](Documentation/4.%20ScriptableObject/CustomGenericScriptableObject.md)\n  - [Float](Documentation/4.%20ScriptableObject/Float.md)\n  - [GameObject](Documentation/4.%20ScriptableObject/GameObject.md)\n  - [GameObjectList](Documentation/4.%20ScriptableObject/GameObjectList.md)\n  - [GameObjectPool](Documentation/4.%20ScriptableObject/GameObjectPool.md)\n  - [Int](Documentation/4.%20ScriptableObject/Int.md)\n  - [List](Documentation/4.%20ScriptableObject/List.md)\n  - [Pool](Documentation/4.%20ScriptableObject/Pool.md)\n  - [String](Documentation/4.%20ScriptableObject/String.md)\n- [Unity Editor Extensions](Documentation/5.%20Unity%20Editor%20Extensions/)\n  - [EnumMask](Documentation/5.%20Unity%20Editor%20Extensions/EnumMask.md)\n  - [EventProfiler](Documentation/5.%20Unity%20Editor%20Extensions/EventProfiler.md)\n  - [RangedSliderDrawer](Documentation/5.%20Unity%20Editor%20Extensions/RangedSliderDrawer.md)\n\n## Credits\n\nFonts used in logo are [**Escafina**](http://www.losttype.com/font/?name=escafina) and [**Klinic Slab**](http://www.losttype.com/font/?name=klinic), both from [**Lost Type**](http://www.losttype.com/).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FCandyCoded%2FCandyCoded","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FCandyCoded%2FCandyCoded","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FCandyCoded%2FCandyCoded/lists"}