{"id":2413,"date":"2025-11-18T19:37:14","date_gmt":"2025-11-18T19:37:14","guid":{"rendered":"https:\/\/golemitegames.com\/?post_type=docs&#038;p=2413"},"modified":"2025-11-21T21:18:55","modified_gmt":"2025-11-21T21:18:55","password":"","slug":"crafting-manager","status":"publish","type":"docs","link":"https:\/\/golemitegames.com\/index.php\/docs\/crafting-manager\/","title":{"rendered":"Crafting Manager"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\" style=\"font-size:22px;text-transform:capitalize\">Introduction<\/h2>\n\n\n\n<p>This component handles both crafting menu types &#8211; The Blueprint Queue menu and the Blueprint Select Menu. It also keeps all the <a href=\"https:\/\/golemitegames.com\/index.php\/docs\/blueprint\/\" title=\"Blueprint\">Blueprints<\/a> available in the game.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" style=\"font-size:22px;text-transform:capitalize\">Setting up<\/h2>\n\n\n\n<p>There is a prefab Crafting_UI located in \/prefabs\/UI.<br><br>Setting up without the prefab requires a few more components to be assigned for the Blueprint Menu&#8217;s including the menu panels, the Buttons, <a href=\"https:\/\/golemitegames.com\/index.php\/docs\/blueprint-select-slot\/\" title=\"Blueprint Select Slot\">Blueprint Select Slots<\/a> and <a href=\"https:\/\/golemitegames.com\/index.php\/docs\/blueprint-queue-slot\/\" title=\"Blueprint Queue Slot\">Blueprint Queue Slots<\/a>. There are also prefabs for these located in \/prefabs\/UI and then BlueprintSelectMenu and CrafterQueueMenu. <br><br>Note &#8211; If your game is using the Crafting Queue menu for <a href=\"https:\/\/golemitegames.com\/index.php\/docs\/crafter\/\" title=\"Crafter\">Crafters<\/a>, both the required menus will be needed. As when clicking in the Crafting Queue Slot, it will then bring up the Blueprint Select menu to choose a <a href=\"https:\/\/golemitegames.com\/index.php\/docs\/blueprint\/\" title=\"Blueprint\">Blueprint<\/a> for that Queue slot. <br><br>There is null checking throughout, so use what you need for your game. <br><br>This component should be placed under a Canvas.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" style=\"font-size:22px;text-transform:capitalize\">Settings<\/h2>\n\n\n\n<p><strong>Blueprints<\/strong><br>Add all of your games <a href=\"https:\/\/golemitegames.com\/index.php\/docs\/blueprint\/\" title=\"Blueprint\">Blueprints<\/a> into this list. <br><br><strong>Blueprint Select Slots<\/strong><br>Assign all of the <a href=\"https:\/\/golemitegames.com\/index.php\/docs\/blueprint-select-slot\/\" title=\"Blueprint Select Slot\">Blueprint Select Slots<\/a> &#8211; These each hold a <a href=\"https:\/\/golemitegames.com\/index.php\/docs\/blueprint\/\" title=\"Blueprint\">Blueprint<\/a>, that can then be refreshed in the slot showing its result, materials and craft time. <br><br><strong>Blueprints Panel<\/strong><br>Assign the <a href=\"https:\/\/golemitegames.com\/index.php\/docs\/blueprint\/\" title=\"Blueprint\">Blueprints<\/a> menu gameobject that will open and close when triggered depending on the <a href=\"https:\/\/golemitegames.com\/index.php\/docs\/crafter\/\" title=\"Crafter\">Crafter<\/a> Click Method.<br><br><strong>Close Button<\/strong><br>Assign the Button to close the <a href=\"https:\/\/golemitegames.com\/index.php\/docs\/blueprint\/\" title=\"Blueprint\">Blueprints<\/a> menu.<br><br><strong>Clear Button<\/strong><br>Assign the Button to clear the <a href=\"https:\/\/golemitegames.com\/index.php\/docs\/blueprint\/\" title=\"Blueprint\">Blueprint<\/a> selection and return null to the Crafter. This is often in the <a href=\"https:\/\/golemitegames.com\/index.php\/docs\/blueprint-select-slot\/\" title=\"Blueprint Select Slot\">Blueprint Select Slot<\/a> list.<br><br><strong>Crafting Queue Panel <\/strong><br>Assign the Crafting Queue menu gameobject that will open and close when triggered depending on the <a href=\"https:\/\/golemitegames.com\/index.php\/docs\/crafter\/\" title=\"Crafter\">Crafter<\/a> Click Method.<br><br><strong>Current Craft Icon<\/strong><br>Assign an Image component to display the <a href=\"https:\/\/golemitegames.com\/index.php\/docs\/blueprint\/\" title=\"Blueprint\">Blueprint<\/a> result Icon which is currently being crafted.<br><br><strong>Craft Name Text<\/strong><br>Assign a TextMeshProUGUI component to display the <a href=\"https:\/\/golemitegames.com\/index.php\/docs\/blueprint\/\" title=\"Blueprint\">Blueprint<\/a> result name which is currently being crafted.<br><br><strong>Blueprint Queue Slots<\/strong><br>Assign all of the <a href=\"https:\/\/golemitegames.com\/index.php\/docs\/blueprint-queue-slot\/\" title=\"Blueprint Queue Slot\">Blueprint Queue Slots<\/a> &#8211; These each hold a <a href=\"https:\/\/golemitegames.com\/index.php\/docs\/blueprint\/\" title=\"Blueprint\">Blueprint<\/a>, that can then be refreshed in the slot showing its Icon. <br><br><strong>Crafter Queue Close Button<\/strong><br>Assign a Button component to close the Crafter Queue menu.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" style=\"font-size:22px;text-transform:capitalize\">Event<\/h2>\n\n\n\n<p><strong>OnBlueprintUnlockEvent<\/strong><br>Triggers when a Blueprint is unlocked &#8211; you can unlock the next <a href=\"https:\/\/golemitegames.com\/index.php\/docs\/blueprint\/\" title=\"Blueprint\">Blueprint<\/a> with UnlockNextBlueprint<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" style=\"font-size:22px;text-transform:capitalize\">Scripting<\/h2>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-csharp\" data-lang=\"C#\" data-show-lang=\"0\"><code>\/\/Action\n\n\/\/Triggers when a Blueprint is unlocked with UnlockNextBlueprint\npublic Action&lt;Blueprint&gt; OnBlueprintUnlockAction;\n\n\/\/Example \npublic void Start() \n{\n    CraftingManager.Instance.OnBlueprintUnlockAction += (blueprint) =&gt; DoSomething(blueprint);\n}\n\n\/\/\/ &lt;summary&gt;\n\/\/\/ Get a Blueprint by its id\n\/\/\/ &lt;\/summary&gt;\n\/\/\/ &lt;param name=&quot;id&quot;&gt;&lt;\/param&gt;\n\/\/\/ &lt;returns&gt;&lt;\/returns&gt;\npublic Blueprint GetBlueprintByID(int id)\n\n\/\/\/ &lt;summary&gt;\n\/\/\/ Close the crafting queue menu\n\/\/\/ &lt;\/summary&gt;\npublic void CloseCrafterQueueMenu()\n\n\/\/\/ &lt;summary&gt;\n\/\/\/ This will assign all blueprints to each BlueprintSelectSlot. You may want to call this if unlocking a new Blueprint not through the UnlockNextBlueprint function\n\/\/\/ &lt;\/summary&gt;\npublic void AssignBlueprints()\n\n\/\/\/ &lt;summary&gt;\n\/\/\/ This will assign all blueprints to each BlueprintSelectSlot based on the given BlueprintGroup. You may want to call this if unlocking a new Blueprint not through the UnlockNextBlueprint function\n\/\/\/ &lt;param name=&quot;blueprintGroup&quot;&gt;The blueprintGroup to populate the blueprints menu with&lt;\/param&gt;\n\/\/\/ &lt;\/summary&gt;\npublic void AssignBlueprints(BlueprintGroup blueprintGroup)\n\n\/\/\/ &lt;summary&gt;\n\/\/\/ Unlock the next blueprint in the order assigned in the list of blueprints that is not currently unlocked\n\/\/\/ &lt;\/summary&gt;\npublic void UnlockNextBlueprint()\n\n\/\/\/ &lt;summary&gt;\n\/\/\/ Unlock the next blueprint in the order assigned in the BlueprintGroup that is not currently unlocked\n\/\/\/ &lt;param name=&quot;blueprintGroup&quot;&gt;The blueprintGroup order to use for the next unlock&lt;\/param&gt;\n\/\/\/ &lt;\/summary&gt;\npublic void UnlockNextBlueprint(BlueprintGroup blueprintGroup)\n\n\/\/\/ &lt;summary&gt;\n\/\/\/ Opens or closes the blueprints panel depending on the bool given\n\/\/\/ &lt;\/summary&gt;\n\/\/\/ &lt;param name=&quot;visible&quot;&gt;&lt;\/param&gt;\npublic void SetBlueprintPanelVisible(bool visible)\n\n\/\/\/ &lt;summary&gt;\n\/\/\/ Is the blueprints panel open?\n\/\/\/ &lt;\/summary&gt;\n\/\/\/ &lt;returns&gt;&lt;\/returns&gt;\npublic bool IsBlueprintsPanelOpen()\n\n\/\/\/ &lt;summary&gt;\n\/\/\/ Is the crafting queue panel open?\n\/\/\/ &lt;\/summary&gt;\n\/\/\/ &lt;returns&gt;&lt;\/returns&gt;\npublic bool IsCraftingQueuePanelOpen()\n\n\/\/\/ &lt;summary&gt;\n\/\/\/ Returns a Blueprint to the given Crafter that asked for it. Returns null if selection was cancelled or cleared\n\/\/\/ &lt;\/summary&gt;\n\/\/\/ &lt;param name=&quot;crafter&quot;&gt;The crafter that is asking for a Blueprint&lt;\/param&gt;\n\/\/\/ &lt;param name=&quot;onResult&quot;&gt;The Action that returns the Blueprint and whether the selection was cleared&lt;\/param&gt;\n\/\/\/ &lt;returns&gt;&lt;\/returns&gt;\npublic IEnumerator GetBlueprint(Crafter crafter, System.Action&lt;Blueprint, bool&gt; onResult)\n\n\/\/\/ &lt;summary&gt;\n\/\/\/ Manually choose a blueprint once the blueprint select menu is open\n\/\/\/ &lt;\/summary&gt;\n\/\/\/ &lt;param name=&quot;blueprint&quot;&gt;&lt;\/param&gt;\npublic void ChooseBlueprint(Blueprint blueprint)\n\n\/\/\/ &lt;summary&gt;\n\/\/\/ Pause the current timer on the crafter queue menu\n\/\/\/ &lt;\/summary&gt;\nprivate void PauseCurrentTimer()\n\n\/\/\/ &lt;summary&gt;\n\/\/\/ Resume the current timer on the crafter queue menu\n\/\/\/ &lt;\/summary&gt;\nprivate void ResumeCurrentTimer()\n\n\/\/\/ &lt;summary&gt;\n\/\/\/ Set up the Crafting Queue menu with a given Crafter\n\/\/\/ &lt;\/summary&gt;\n\/\/\/ &lt;param name=&quot;crafter&quot;&gt;&lt;\/param&gt;\npublic void InitialiseCrafterMenu(Crafter crafter)\n\n\/\/\/ &lt;summary&gt;\n\/\/\/ Use this refresh the crafter queue\n\/\/\/ &lt;\/summary&gt;\npublic void RefreshBlueprintsQueue()\n\n\/\/\/ &lt;summary&gt;\n\/\/\/ Removes a blueprint from the queue from the BlueprintQueueSlot that is given\n\/\/\/ &lt;\/summary&gt;\n\/\/\/ &lt;param name=&quot;blueprintQueueSlot&quot;&gt;&lt;\/param&gt;\npublic void ClearBlueprintFromQueue(BlueprintQueueSlot blueprintQueueSlot)<\/code><\/pre><\/div>\n\n\n\n<p><br><br><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction This component handles both crafting menu types &#8211; The Blueprint Queue menu and the Blueprint Select Menu. It also keeps all the Blueprints available in the game. Setting up There is a prefab Crafting_UI located in \/prefabs\/UI. Setting up without the prefab requires a few more components to be assigned for the Blueprint Menu&#8217;s [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"doc_category":[46],"doc_tag":[],"class_list":["post-2413","docs","type-docs","status-publish","hentry","doc_category-resource-and-production"],"acf":[],"aioseo_notices":[],"year_month":"2026-04","word_count":895,"total_views":0,"reactions":{"happy":0,"normal":0,"sad":0},"author_info":{"name":"rickitz5h","author_nicename":"rickitz5h","author_url":"https:\/\/golemitegames.com\/index.php\/author\/rickitz5h\/"},"doc_category_info":[{"term_name":"Resource And Production","term_url":"https:\/\/golemitegames.com\/index.php\/docs-category\/resource-and-production\/"}],"doc_tag_info":[],"_links":{"self":[{"href":"https:\/\/golemitegames.com\/index.php\/wp-json\/wp\/v2\/docs\/2413","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/golemitegames.com\/index.php\/wp-json\/wp\/v2\/docs"}],"about":[{"href":"https:\/\/golemitegames.com\/index.php\/wp-json\/wp\/v2\/types\/docs"}],"author":[{"embeddable":true,"href":"https:\/\/golemitegames.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/golemitegames.com\/index.php\/wp-json\/wp\/v2\/comments?post=2413"}],"version-history":[{"count":5,"href":"https:\/\/golemitegames.com\/index.php\/wp-json\/wp\/v2\/docs\/2413\/revisions"}],"predecessor-version":[{"id":2565,"href":"https:\/\/golemitegames.com\/index.php\/wp-json\/wp\/v2\/docs\/2413\/revisions\/2565"}],"wp:attachment":[{"href":"https:\/\/golemitegames.com\/index.php\/wp-json\/wp\/v2\/media?parent=2413"}],"wp:term":[{"taxonomy":"doc_category","embeddable":true,"href":"https:\/\/golemitegames.com\/index.php\/wp-json\/wp\/v2\/doc_category?post=2413"},{"taxonomy":"doc_tag","embeddable":true,"href":"https:\/\/golemitegames.com\/index.php\/wp-json\/wp\/v2\/doc_tag?post=2413"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}