{"id":23163184,"url":"https://github.com/mmike17/unity_ice","last_synced_at":"2025-04-04T20:36:11.381Z","repository":{"id":265956614,"uuid":"882255286","full_name":"MMike17/Unity_ICE","owner":"MMike17","description":"I.C.E. is a Unity editor tool used to execute code in the editor outside of play mode.","archived":false,"fork":false,"pushed_at":"2024-12-02T15:42:41.000Z","size":301,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-10T05:14:41.910Z","etag":null,"topics":["gamdev","gamedev-tool","unity"],"latest_commit_sha":null,"homepage":"https://mikematthews.itch.io/ice","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MMike17.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2024-11-02T10:19:48.000Z","updated_at":"2024-12-02T15:38:43.000Z","dependencies_parsed_at":"2024-12-02T02:01:43.031Z","dependency_job_id":null,"html_url":"https://github.com/MMike17/Unity_ICE","commit_stats":null,"previous_names":["mmike17/unity_ice"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MMike17%2FUnity_ICE","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MMike17%2FUnity_ICE/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MMike17%2FUnity_ICE/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MMike17%2FUnity_ICE/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MMike17","download_url":"https://codeload.github.com/MMike17/Unity_ICE/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247249028,"owners_count":20908202,"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":["gamdev","gamedev-tool","unity"],"created_at":"2024-12-18T00:16:45.916Z","updated_at":"2025-04-04T20:36:11.360Z","avatar_url":"https://github.com/MMike17.png","language":"C#","readme":"# **I**nstant **C**ode **E**xecution\n\n_This tool is a Unity editor tool._\n\nI.C.E. is a Unity editor tool used to execute code in the editor outside of play mode.\n\n_(Yes. This is a Neuromancer reference)_\n\n## Usage\n\nIn the Unity Editor, in the top menu bar, under the \"Tools\" tab you'll find the \"ICE\" option.\\\nThis will open the I.C.E. editor window.\n\nThis tool has two panels, the **Code console** and the **Remote code**.\n\n## Code console\n\n![](.Screenshots/Console.png)\n\nThe code console panel provides you with a console in which you can directly type your code and a set of presets you can name, save and delete.\n\n### Presets\n\nThe editor code you type is separated into _presets_ you can save, rename and delete using the top section.\\\nClicking the \"+\" button will add a new preset.\n\n### Code\n\nIn the big input box you can type your preset code.\\\nThis does not hold any of your IDE/code editor features.\n\nEverytime the code changes it is saved to its preset.\n\n⚠️ Do not press the `[ESCAPE]` key as it would cancel your current changes to your code. ⚠️\n\n### API documentation\n\nThis tool provides the following methods to ease code writing :\n\n- `Find` : Used to find an object in the current scene.\n- `FindAll` : Used to find mutlitple objects in the current scene.\n- `SpawnMultiple` : Used to spawn multiple objects in the scene.\n- `SpawnMultipleWithPrefabLink` : Used to spawn multiple prefabs in the scene and retain the prefab link.\n- `PlaceOnLine` : Places multiple objects in a line.\n- `PlaceOnCircle` : Places multiple objects in a circle.\n- `SnapToGrid` : Snaps objects positions to a provided grid size.\n- `GetAsset` : Gets a reference to an asset.\n\nPress the \"API\" button to open the documentation windown with the full methods details and available overrides.\n\n### Execution\n\nPress the \"Execute\" button to compile and execute your code.\\\nThis will trigger and assembly reload and execute your code immediately.\n\nThis tool generates a script called \"**ICE.cs**\" in the \"Assets/\" directory, a script with the same name and path will be overwritten.\n\n### Save script\n\nPress the \"Save script\" button to save this preset as a method with a similar name into an ICE remote methods script. This script is either the default generated script (at : \"Assets/Editor/RemoteICEMethods.cs\") or a script with the same name placed elsewhere in the project.\n\nYou can find your preset saved to script in the **Remote code** panel.\n\n### Code errors\n\nIn case the code doesn't compile, the ICE.cs script will stay in your codebase at \"Assets/ICE.cs\" and the Unity console will provide you with error descriptions.\n\nIf the ICE.cs script compiles it will get executed.\n\n## Remote code\n\n![](.Screenshots/Remote.png)\n\nThe remote code panel lists all the methods marked as instantly executable.\\\nIf the methods are from the \"RemoteICEMethods.cs\" script, you can open that script to its corresponding line.\n\nYou can also execute the method directly in the editor.\\\n**Code executed from this panel will not need an assembly reload.**\n\nIf the listed methods have parameters, they will be displayed, as editor fields if they're supported, or as the \"not supported\" message if they are not.\n\nThe _supported_ parameter types are :\n- **bool**\n- **int**\n- **float**\n- **string**\n- **enum** types\n- **Vector2**\n- **Vector3**\n- **Color**\n- Any type inheriting from **UnityEngine.Object** (ex : Transform, MonoBehaviour, etc...)\n\nICE methods also support default values for parameters.\n\n### Custom ICE methods\n\nYou can write your own ICE remote methods anywhere in your codebase by adding the \"ICE\" attribute to them.\\\nFor a marked method to be taken into account it needs to follow 3 rules :\n- Be static\n- Have a **void** return type\n\n⚠️ The \"ICE\" attribute is defined in the editor script, it will only be available for scripts placed in a folder labeled \"Editor\". ⚠️\n\n## Support\n\nThis tool supports most of the C# features that your current Unity version supports, except for the following :\n\n- \"using\" keyword to reference libraries can't be used given the structure of the generated code.\n- multiple ICE execution is disabled, only one script can be executed at a time, therefore references between ICE scripts will not compile.\n\nThe libraries included in the generated code are :\n\n- System\n- System.Collections\n- System.Collections.Generic\n- System.IO\n- System.Linq\n- UnityEditor\n- UnityEditor.SceneManagement\n- UnityEngine\n- UnityEngine.SceneManagement\n- UnityEngine.UI\n\nThe generated code also holds two aliasses :\n\n- `Object` for **UnityEngine.Object**\n- `Random` for **UnityEngine.Random**\n\nIf you want to use the _System_ variant you'll have to specify the class name fully (_System.Object_).","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmmike17%2Funity_ice","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmmike17%2Funity_ice","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmmike17%2Funity_ice/lists"}