Generated by All in One SEO v4.9.0, this is an llms.txt file, used by LLMs to index the site. # GolemiteGames Connecting games ## Sitemaps - [XML Sitemap](https://golemitegames.com/sitemap.xml): Contains all public & indexable URLs for this website. ## Posts - [Resource And Production](https://golemitegames.com/index.php/2026/02/13/resource-and-production/) - Resource and Production - Gather, Store and Craft. Create Items and Blueprints and use them across the entire system. Works in various game types, with over 18 Unity Events to hook into. - [Timers Made Easy](https://golemitegames.com/index.php/2022/01/10/timers-made-easy/) - Timers Made Easy is a quick and easy way to set up customised timers with a few clicks. It has a lot of customisation to get the look of the timer you really want, set up with some ready-made prefabs ready to drop into your project. - [Grid Builder 2](https://golemitegames.com/index.php/2022/09/01/grid-builder-2/) - Grid Builder 2 expands on Grid Builder as a base grid system for the foundation of many game types. New features include placing objects larger than one cell, saving and loading, preconfigiured grids, rotation, moving, selecting and a larger array of tools and types for the grid. - [Grid Builder](https://golemitegames.com/index.php/2022/02/18/grid-builder/) - Grid Builder is a quick and convenient way of creating a placement grid system with built-in placement and removal logic. Tower defence, strategy, real-time strategy, simulation, construction. - [3D Dwarven Chest](https://golemitegames.com/index.php/2022/02/10/3d-dwarven-chest/) - [3D Stylized Temple](https://golemitegames.com/index.php/2022/01/22/3d-stylized-temple/) - [3D Stylized Loot Chest](https://golemitegames.com/index.php/2021/12/28/3d-stylized-loot-chest/) ## Pages - [HomePage](https://golemitegames.com/) - Game Development Assets Golemite Games is focused on creating high quality game engine assets, specifically for the Unity engine. The assets mostly consist of systems but do also contain some 3D models. Our background is in programming and 3D, with other ad hoc skills picked up along the way. Our current game development setup consists - [About](https://golemitegames.com/index.php/about/) - At Golemite Games we create highly customisable components for use in game development. These are mostly built for Unity and are often a biproduct from our games. We also create high quality models for game development. These again are built and ready made for Unity but could be easily imported into other game engines. - [Contact](https://golemitegames.com/index.php/contact/) - Please feel free to message support with any queries at support@golemitegames.com We aim to respond to all questions within 48 hours however occasionally this can take slightly longer. - [Services](https://golemitegames.com/index.php/services/) - Freelance Asset Creation We can create assets built for the Unity game engine from scratch to meet your games needs. We mostly build systems with our extensive 20 years of programming knowledge and 10 years using Unity. Let us know the scope of the asset you need, and we can discuss timescales that will work - [Grid Builder 2 loading flow chart](https://golemitegames.com/index.php/grid-builder-2-loading-flow-chart/) - Loading Flow Chart Sometimes it can be complicated to know what will load, so this flow chart should clear things up of what to expect from Grid Builder 2’s load system. - [Documentation](https://golemitegames.com/index.php/documentation/) - Documentation TimersMadeEasy 1article - [3D Assets](https://golemitegames.com/index.php/3d-assets/) - 3D Assets 3D Dwarven Chest Read More 3D Stylized Temple Read More 3D Stylized Loot Chest Read More - [Unity Components](https://golemitegames.com/index.php/unity-components/) - Unity Components Grid Builder Grid Builder is a quick and convenient way of creating a placement grid system with built-in placement and removal logic. Tower defence, strategy, real-time strategy, simulation, construction. Read More Timers Made Easy Timers Made Easy is a quick and easy way to set up customised timers with a few clicks. It - [Blog](https://golemitegames.com/index.php/blog/) ## My Templates - [Header](https://golemitegames.com/?elementor_library=elementor-header-597) - [Elementor Single Doc 12/11/2025](https://golemitegames.com/?elementor_library=elementor-single-doc-12-11-2025) - Documentation Resource And Production Introduction Quick setup Resource Node Item Container Crafter Item Blueprint Blueprint Group Resource Stat Stat Bar Item Amount World Item Resource And Production Manager Input Manager Save Manager Miner UI Billboard Manager UI Billboard Inventory Manager Item Amount Info Panel Inventory Item Slot Item Slot Crafting Manager Blueprint Select Slot Blueprint - [Elementor Docs Main 12/11/2025](https://golemitegames.com/?elementor_library=elementor-docs-archive-2223) - Documentation Resource And Production Introduction Quick setup Resource Node Item Container Crafter Item Blueprint Blueprint Group Resource Stat Stat Bar Item Amount World Item Resource And Production Manager Input Manager Save Manager Miner UI Billboard Manager UI Billboard Inventory Manager Item Amount Info Panel Inventory Item Slot Item Slot Crafting Manager Blueprint Select Slot Blueprint - [PageTitle](https://golemitegames.com/?elementor_library=pagetitle) - [Unity Components Template](https://golemitegames.com/?elementor_library=elementor-single-post-867) - Features Check out the package on the Unity Asset Store - [Default Kit](https://golemitegames.com/?elementor_library=default-kit) - [Footer](https://golemitegames.com/?elementor_library=elementor-footer-611) - Twitter Instagram - [Single Docs Template 12/11/2025](https://golemitegames.com/?elementor_library=single-docs-template-12-11-2025) - Resource And Production Introduction Quick setup Resource Node Item Container Grid Builder 2 Introduction Quick setup Set up from scratch Implementing Grid Builder 2’s interfaces Setup auto cell blocking Saving, Loading & Preconfiguration Component descriptions & requirements Setting up the Building component and PickObjectBtn Limitations Troubleshooting GridSquare General settings Save/Load/Preconfiguration Auto Cell Block Prefabs Debug - [Documentation Heading](https://golemitegames.com/?elementor_library=documentation-heading) - Documentation - [DocSideBar](https://golemitegames.com/?elementor_library=docsidebar-2) - Resource And Production Introduction Quick setup Resource Node Item Container Grid Builder 2 Introduction Quick setup Set up from scratch Implementing Grid Builder 2’s interfaces Setup auto cell blocking Saving, Loading & Preconfiguration Component descriptions & requirements Setting up the Building component and PickObjectBtn Limitations Troubleshooting GridSquare General settings Save/Load/Preconfiguration Auto Cell Block Prefabs Debug - [DesktopSearch](https://golemitegames.com/?elementor_library=desktopsearch) - [MobileSearch](https://golemitegames.com/?elementor_library=mobilesearch) - [Contact Support text](https://golemitegames.com/?elementor_library=contact-support-text) - Still need help? Contact support at support@golemitegames.com Please describe your issue in detail and if possible, provide screenshots to help us understand your problem better and answer your question more effectively. - [BannerBottom](https://golemitegames.com/?elementor_library=bannerbottom) - [BannerMiddle](https://golemitegames.com/?elementor_library=bannermiddle) - Creative game development assets - [BannerTop](https://golemitegames.com/?elementor_library=bannertop) ## Docs - [World Item](https://golemitegames.com/index.php/docs/world-item/) - Introduction This component acts as a physical pick up that can be collected from any player character. World Items are spawned from ResourceNodes and animate in an arc. Your playable character should have a layer than can be assigned in the settings of this component. Setting up There is a WorldItem prefab located in /prefabs. - [Resource Node](https://golemitegames.com/index.php/docs/resource-node/) - Introduction Resource Nodes act as the interaction layer for mining and gathering resources, with various options for how and when resources are collected. Setting up There are some sample prefabs in Demo/Resources or you can create your own starting from /Prefabs/ResourceNode_Master. If you wanted to set up from scratch, a couple of things to remember - [Item](https://golemitegames.com/index.php/docs/item/) - Introduction Items are Scriptable Objects that store an Items data for use throughout the system. They are mainly used in Resources and Blueprints but also internally used in ItemAmounts. Setting up There are some ready made Items in /Items in the root of the folder. You can set up new Items with Create>ResourceAndProduction>Item. Settings NameThe - [Popup Spawner](https://golemitegames.com/index.php/docs/popup-spawner/) - Introduction Add as a child to either a Resource Node, Item Container, Crafter or WorldItem to spawn popups. It hooks in to the Actions provided to spawn. Setting up There is a prefab Popup Spawner located in /prefabs/UI. Setting up without the prefab is easy and only requires a Popup prefab which contains the Popup - [Quick setup](https://golemitegames.com/index.php/docs/quick-setup-3/) - 3D_Sample demo Scene Open the 3D_Sample scene located in /Demo/Scenes.You can click play and instantly see the one of the control modes working. You can move around, and click on Resource Nodes once you are close enough. In order to try a different control mode you need to hide the current control mode (for example - [Crafter](https://golemitegames.com/index.php/docs/crafter/) - Introduction Crafters create ItemAmounts using Blueprints, and add them to the Global Storage solution or directly to an Item Container after the craft time has finished. Crafters have many options of how they should operate such as repeating crafting, a crafting queue, or only being able to select from a group of Blueprints called a - [Player Interaction Indicator](https://golemitegames.com/index.php/docs/player-interaction-indicator/) - Introduction This component is used as an extra for First person or player controlled modes to display an icon when an interactable object is within mining range which is set on the Input Manager. Setting up There are two prefabs - InteractionIndicator_PlayerControlled and InteractionIndicator_FirstPerson in /prefabs/UI. In both instances this component should be added as - [Singleton](https://golemitegames.com/index.php/docs/singleton/) - Introduction This component is a generic singleton pattern class. It needs to be inherited from and thus produces only one Instance of this class in the world. This system uses a few Singleton patterns to make linking up and setting up easier. If you decide to use this class in your own scripts, just be - [Inventory Manager](https://golemitegames.com/index.php/docs/inventory-manager/) - Introduction This component handles the Global Storage Solution and also the inventory UI. This is also a required component for the system to work, so one must be placed under a Canvas. Setting up There is a prefab Inventory_UI located in /prefabs/UI. Setting up without the prefab otherwise is a little more complicated, as it - [Unique ID](https://golemitegames.com/index.php/docs/unique-id/) - Introduction This component simply stores a unique ID for the gameobject it is attached too. It will auto generate, although you can generate a new one, or copy the current one. In the system, this is generally used in conjuction with the SaveableObject component. Setting up Add the component to the gameobject. SaveableObject will add - [Saveable Object](https://golemitegames.com/index.php/docs/saveable-object/) - Introduction This component is used in conjuction with the SaveManager and the ISaveable interface. It also makes use of the UniqueID class. Every component in this system that needs saving should have this component attached. Setting up Attach this component on the same gameobject as either a ResourceNode, ItemContainer or Crafter. This will in turn - [Top Down Player Controller](https://golemitegames.com/index.php/docs/top-down-player-controller/) - Introduction This is a simple top down player controller used to demonstrate the versatility of the system. Setting up There is a prefab PlayerControlled set up in /prefabs/ControlModes. This component is best used with the Camera Follow XZ component to have the Camera move with the player. Settings Move SpeedMovement speed of the controller. Rotation - [Timer](https://golemitegames.com/index.php/docs/timer/) - Introduction This component is solely used in the Crafter component. It does not rely on other components from this system however, so you could use this Timer class for any other logic that would require a Timer. Setting up Setting up just requires adding this component to a gameobject.Crafter will automatically add this component to - [UI Billboard](https://golemitegames.com/index.php/docs/ui-billboard/) - Introduction UI Billboard is simply a container that registers itself with the UI Billboard Manager to rotate its transform to face the Camera. For one single UI element, you could assign this component to that element itself. If you have multiple UI elements next to each other - for example you might have a StatBar - [Event Visual](https://golemitegames.com/index.php/docs/event-visual/) - Introduction This component contains two simple animations by code and an easy way to start and stop a particle system. It is a very basic component, and is generally made to show easy it is to hook into the events of the main components. Setting up Setting up is easy and just requires either the - [Info Icon](https://golemitegames.com/index.php/docs/info-icon/) - Introduction Info Icon display various Icons depending on the settings you choose for the Icon Type. It connects to ResourceNode, ItemContainer and Crafter classes to display relevent information. Info Icons should either have a UI Billboard attached or be a child of one to maintain rotation with the Camera. Setting up There is a prefab - [FPS Popup Spawner](https://golemitegames.com/index.php/docs/fps-popup-spawner/) - Introduction Similar to the PopupSpawner, but will place the Popup in front of the Resource Node when a Resource is triggered. It will also apply scaling depending on how far you are from the Resource Node, meaning you will always see the popup no matter how far you are away. Unlike the PopupSpawner, this component - [Popup](https://golemitegames.com/index.php/docs/popup/) - Introduction Displays ItemAmount information and animates the Popup upwards and fades it out. This information is given from a PopupSpawner or FPSPopupSpawner. Setting up There is a prefab Popup located in /prefabs/UI. Setting up without the prefab is easy and only requires an Image and TextMeshProUGUI component. The other settings are given by a PopupSpawner. - [Blueprint Queue Slot](https://golemitegames.com/index.php/docs/blueprint-queue-slot/) - Introduction The Blueprint Queue Slot simply refreshes its information based on the Blueprint that is assigned to it, while also being used a Button to select a Blueprint or clear the slot. Note - The first Blueprint currently being crafted should also have this component, and enabling the IsResultBtn option. Setting up There is a - [Blueprint Select Slot](https://golemitegames.com/index.php/docs/blueprint-select-slot/) - Introduction The Blueprint Select Slot simply refreshes its information based on the Blueprint that is assigned to it. Setting up There is a prefab BlueprintSelectSlot located in /prefabs/UI. Setting up without the prefab is easy and simply requires the Image and TextMeshProUGUI components to display the neccesary information in the slot. The Material slots should - [Crafting Manager](https://golemitegames.com/index.php/docs/crafting-manager/) - Introduction This component handles both crafting menu types - 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's - [Item Slot](https://golemitegames.com/index.php/docs/item-slot/) - Introduction This component handles refreshing the Inventory Item slots and Blueprint Select Slots materials. Setting up There is a prefab ItemSlot located in /prefabs/UI. Setting up without the prefab otherwise is easy, it needs only 2 other components to work, and Image for the Icon, TMP component for Count. This component should be placed under - [Inventory Item Slot](https://golemitegames.com/index.php/docs/inventory-item-slot/) - Introduction This component handles refreshing the Inventory UI for individual ItemAmount information once clicked on a InventoryItemSlot. Setting up There is a prefab InventoryItemSlot located in /prefabs/UI. Setting up without the prefab otherwise is easy, it needs only 3 other components to work, and Image for the Icon, TMP component for Count and a Button - [Item Amount Info Panel](https://golemitegames.com/index.php/docs/item-amount-info-panel/) - Introduction This component handles refreshing the Inventory UI for individual ItemAmount information once clicked on a InventoryItemSlot. Setting up There is a prefab ItemAmountInfoPanel located in /prefabs/UI. Setting up without the prefab otherwise is a little more complicated, as it would involve creating and linking all the visual UI elements. If you wanted to go - [UI Billboard Manager](https://golemitegames.com/index.php/docs/ui-billboard-manager/) - Introduction This component changes all registered UI Billboard elements to face the Camera that is assigned in Resource And Production Manager. This is extremely useful for most game types that use world UI with a moving Camera. Registered components consist of the following - StatBarPopupSpawnerFPSPopupSpawnerPlayerInteractionIndicator Unregistering for destroyed gameobjects is handled automatically. Setting up There - [Miner](https://golemitegames.com/index.php/docs/miner/) - Introduction A simple class that sets the Mine Power that is applied to Resource Nodes. This component is required and is assigned in the Resource And Production Manager component. Setting up There is a prefab Miner located in /prefabs/Managers or the main prefab for the ResourceAndProductionManager also contains this manager. Setting up otherwise is as - [Save Manager](https://golemitegames.com/index.php/docs/save-manager/) - Introduction This Manager class handles saving the data from this asset, which includes the Resource Node, Item Container and Crafter components. All of these components self register themselves with this manager to make sure they are saved if they still exist. It uses the ISaveable interface, alongside the SaveableObject component. The former must be implemented - [Input Manager](https://golemitegames.com/index.php/docs/input-manager/) - Introduction This Manager class manages all world Input for the Resource And Production asset. It can use the New Input System (for which you will find a ready made ActionMap in the root of the asset), or the Old Input System. It gathers input using raycasts in both 3d and 2d so you can use - [Resource And Production Manager](https://golemitegames.com/index.php/docs/resource-and-production-manager/) - Introduction This Manager class keeps hold of all Resource Nodes, Item Containers and Crafters currently in the scene. It also has some of the global settings for the asset. This is a required component for the asset to work. Setting up There is a prefab ResourceAndProductionManager located in /prefabs/Managers which contains all the necessary prefabs - [Item Amount](https://golemitegames.com/index.php/docs/item-amount/) - Introduction A simple class that stores an Item, and an Amount. This class also Clamps and Rounds depending on the Item's Precision Type setting. Item Amounts have a custom property drawer which look like the below. Setting up There is no setup, all Item Amounts are handled internally or through other parts of code such - [Stat Bar](https://golemitegames.com/index.php/docs/stat-bar/) - Introduction StatBar is a visual utility class used on a few components in the system. It generally represents things like Hp and Limits and is assigned on the Stat class. The StatBar has a good looking visual animation for when the bar increases or decreases. Depending on whether there is an increase or decrease, one - [Stat](https://golemitegames.com/index.php/docs/stat/) - Introduction Stat is a utility class used on a few of the other components in the system. It generally represents things like Hp and Limits. Setting up Stat does not inherit from MonoBehaviour therefor there is no setup required. However if you wanted to use this utility class for yourself, simply add a Stat field - [Resource](https://golemitegames.com/index.php/docs/resource/) - Introduction A Resource is unique to the Resource Node component and has its own property drawer setup. This setup involves how much and when this Resource will trigger and be given to the player. Setting up To add a new resource, assign a new Resource to the Resources list on a Resource Node. This is - [Blueprint Group](https://golemitegames.com/index.php/docs/blueprint-group/) - Introduction Blueprint Groups are Scriptable Objects that store a single list of Blueprints. Think of these as defining what a Crafter is able to craft. A smelter for example might be only able to produce bars, so this list could all the 'Bar' Blueprints. You may have an equipment workshop, and have it so it - [Blueprint](https://golemitegames.com/index.php/docs/blueprint/) - Introduction Blueprints are Scriptable Objects used in Crafters to produce the Result of the Blueprint. They are also used in Blueprint Groups to create a range of Blueprints the Crafter can select from. Setting up There are some ready made Blueprints in /Blueprints in the root of the folder. You can set up new Blueprints - [Item Container](https://golemitegames.com/index.php/docs/item-container/) - Introduction Item Containers are the flexible storage solution linking up to the Inventory Manager as a Global Storage solution if required. They can be used singularly, or used in this combined method. Setting up There is a prefab for the Item Container located in /Prefabs/ItemContainer_Master. If you wanted to set up from scratch, a couple - [Introduction](https://golemitegames.com/index.php/docs/introduction-12/) - Resource and Production uses Resource Nodes, Item Containers, Crafters, Items and Blueprints along with many other supporting classes and managers to create a fleshed out Resource collection, Storage and Crafting system. Custom Editors, Property Drawers, UI, Saving and Loading, Multiple Input Options, 3D and 2D and Popups. The systems have been built to require minimum - [Camera Follow XZ](https://golemitegames.com/index.php/docs/camera-follow-xz/) - Introduction This is a simple camera follow used to demonstrate the versatility of the system. Setting up Attach this component to a Camera and assign a target to follow. This is already set up on the PlayerControlled prefab in /prefabs/ControlModes. Settings TargetThe target to follow. Follow SpeedHow quick to move toward the target. Camera Centered - [Camera Controller](https://golemitegames.com/index.php/docs/camera-controller/) - Introduction This is a simple camera controller used to demonstrate the versatility of the system. Setting up There is a prefab OverseerCamera set up in /prefabs/ControlModes. Attach this component to a Camera. Settings AxisMoves the Camera on the respective axis. Generally - XZ for 3d, and XY for 2d. Move SpeedMovement speed of the controller. - [First Person Controller](https://golemitegames.com/index.php/docs/first-person-controller/) - Introduction This is a simple first person controller used to demonstrate the versatility of the system. Setting up There is a prefab PlayerFirstPerson set up in /prefabs/ControlModes. A Camera must be a child of the gameobject that contains this component and assigned to Camera Transform field. Settings Camera TransformAssign a Camera for this component to - [Physical Clickable](https://golemitegames.com/index.php/docs/physical-clickable/) - Introduction A simple component with a single UnityEvent for adding a function to perform when the the gameobject this component on is Clicked. In the demo scene, there is box with this component in the scene, that once clicked, will bring up the Inventory. All of that is set up in the inspector. Setting up - [Introduction](https://golemitegames.com/index.php/docs/introduction-9/) - Grid Builder 2 expands upon Grid Builders design and placement logic with a whole host of new features. Some commonly asked questions have been answered in this upgrade including saving and loading grids and objects, pre configured grids, object taking up to 5x5 grid cells, easier set up, more grid types, more placement types and - [Quick setup](https://golemitegames.com/index.php/docs/quick-setup-2/) - Placing a grid Navigate to /Prefabs/WholeGrids, drag in one of the premade grids and adjust the General settings such as height, width and cellSize. Best to keep the cellSize at 1 = 1 metre. However, everything will adjust if you decide to change it. If you want the grid to be above some existing terrain, - [Implementing Grid Builder 2's interfaces](https://golemitegames.com/index.php/docs/implementing-grid-builder-2s-interfaces/) - Implementing the interface Using an interface is easy, simply add the interface after the MonoBehaviour. From here depending on your IDE you can right click the red underlined interface and select quick actions and implement interface. If you do not have this, simply create a function with exactly the same name as the interface has. - [Component descriptions & requirements](https://golemitegames.com/index.php/docs/component-descriptions-requirements/) - Grid Builder 2 works by using specific components to do different jobs. You may want all the functionality in your game, or only some, and there is little point in wasting resources with everything built in. If you want to use every function Grid Builder 2 has to offer, grab a prefab of each type - [Set up from scratch](https://golemitegames.com/index.php/docs/set-up-from-scratch-2/) - Setting up the grid Create a new empty gameobject, and add the 'GridSquare' script. If choosing this way, you will need to link up a gridCell prefab from /Prefabs/GridCells if in single-cell mode, or apply a 'Simple' material from /Materials/Grid if in simple mode. You also have some choices of Lines or Points as well. - [Setting up the Building component and PickObjectBtn](https://golemitegames.com/index.php/docs/setting-up-the-building-component-and-pickobjectbtn/) - Intro Grid Builder 2 comes with a range of new features, and one of those includes the option to place down objects up to either 5x5 cells or 4x4. This is all initially set up via the Building component and assigned to a PickObjectBtn prefab and later passed through various classed to keep track of - [Updating from version 1.1.0 to version 1.2.0](https://golemitegames.com/index.php/docs/updating-from-version-1-1-0-to-version-1-2-0/) - Some major changes were made in this update, including a GridBuilder2Manager class, and seperating the building data from the SelectObject button into two seperate classes, Building and PickObjectBtn. Please follow the below steps to insure Grid Builder 2 is set up correctly. 1. First of all in any scene you currently use Grid Builder 2 - [Troubleshooting](https://golemitegames.com/index.php/docs/troubleshooting-3/) - Why does my grid not display anything? Grid builder requires a prefab to display as the grid cell if the mode is set to single cell or checkered. If in simple mode you will need to have a material on the grids mesh renderer. If you are still not seeing anything cells, chances are you - [Limitations](https://golemitegames.com/index.php/docs/limitations-2/) - There are some limitations when using grid builder 2 which are outlined in the following article. Most of what the system can be expanded however, see ‘Expanding’. Grid size Although this system is set up to run smoothly on most devices, increasing cell counts to high numbers especially on modes except simple. If you need - [Saving, Loading & Preconfiguration](https://golemitegames.com/index.php/docs/saving-loading-and-preconfiguration/) - Intro Saving and loading your game or grid is easy and works individually per grid. So you could save and load one grid, while keeping the other from saving and loading at all. Creating a Preconfiguration is also easy, and will be explained in this article. The Grid ID The Grid ID located just under - [ObjectRemover](https://golemitegames.com/index.php/docs/objectremover/) - public void RemoveObject(GameObject objToRemove, GridObject.Data gridObjectData) This function removes the given objToRemove using the gridObjectData to find the grid and checkPositions to unblock. Currently gridObjectData is formulated at placement time and fairly troublesome to replicate. If you want to remove objects from the grid via code, consider using the below method. public void RemoveObject(GameObject objToRemove, - [ObjectStorage](https://golemitegames.com/index.php/docs/objectstorage/) - This class works out of the box by adding the GameObject's to Dictionaries when placed on the grid. public static void AddTypeObject(int prefabId, GameObject obj) This method is called when placing an object via the ObjectPlacer to add the object to the type dictionary. The prefabId is initially set via the SelectObject button as it - [GridData](https://golemitegames.com/index.php/docs/griddata/) - This class creates many List's and stores all of the GridObject's data for use when saving, loading and using preconfigurations. This class serves no other purpose but could also be expanded with additional List's if you decide to add more data later in development. - [GridObject](https://golemitegames.com/index.php/docs/gridobject-2/) - This class is added to every placed object by default. It holds important information about its position, rotation, grid and many other things. These are all available to get and set via getting GridObject.Data objData = obj.GetComponent().data; public void ReapplyOriginalMaterials() This function can be called on the base GridObject class. GridObject gets and holds its - [RemoveMode](https://golemitegames.com/index.php/docs/removemode-2/) - This class should be added to a button to enable and disable the ObjectRemover class component at runtime. public void DisableRemoveMode() Disables the ObjectRemover if there is one. public void EnableRemoveMode() Enables the ObjectRemover if there is one. public void ChangeText() Changes the text on the button if the ObjectRemover is enabled or not. - [SaveLoadGrid](https://golemitegames.com/index.php/docs/saveloadgrid/) - public static void SaveCurrentGrid (GridSquare gridSquare) Saves the given gridSquare to disk under string path = $"{Application.persistentDataPath}/{SceneManager.GetActiveScene().name}"; The file name will contain the gridSquare.name plus its id. Note. This save path is relevent only to the user. Any save files shipped with the product will be redundent as Application.persistantDataPath is different for each OS. To - [GridObjectOptions](https://golemitegames.com/index.php/docs/gridobjectoptions/) - public void Move() After using the ObjectSelector to select an object, this function then sets up unblocking the cells of that object and also basically resetting it to be placed again. If you call this from another script, just be sure to set this class's SelectedObj variable. The SelectedObj will also need to have the - [ObjectSelector](https://golemitegames.com/index.php/docs/objectselector/) - public void DeselectObject() Deselects the currently selected object. This includes reapplying the objects original material as well as closing any menu if there is one. public void SelectObject(GameObject selectedObj) Selects the given object. This applies the selected material applied in the inspector as well as opens any menu set via the GridObjectOptions if there is - [ObjectPlacer](https://golemitegames.com/index.php/docs/objectplacer-2/) - public GameObject PlaceObject(GameObject obj, GridObject.Data gridObjectData, int layer) Uses all of the data passed from the GridSelector to place an object on the grid. This function is primarily used by the GridSelector and currently the class GridObject.Data is very tricky to replicate the relevant information publicly. If your goal is to place objects with a - [GridSelector](https://golemitegames.com/index.php/docs/gridselector-2/) - public void ShowHideSelectorAndPreview() This will force the grid selector to check again if cells are valid for placement for the current positions. It is called on every cell move, and after certain actions such as placing and removing objects. Use this function when you need to manually recheck cell validity. public void PlaceObjectIfEmpty(GridSquare currentGrid) This - [GridSquare](https://golemitegames.com/index.php/docs/gridsquare/) - public void SaveGrid() Save this GridSquares placed objects. These save files are found under the local OS storage space for Application.persistantDataPath. //Get the grid GridSquare myGrid; void OnApplicationQuit() { //Save this grid when the application quits myGrid.SaveGrid(); } public void LoadGrid() Loads the grid it is called on. There has to be a save file - [Introduction](https://golemitegames.com/index.php/docs/introduction-11/) - There are some useful public functions included in the scripts that come with this package which could come in useful in whatever application this is being used for. This system uses Clamped Vector3's as keys in a dictionary with the corresponding game object if there is one as the value. If there is no game - [General Settings](https://golemitegames.com/index.php/docs/general-settings-10/) - The Build Mode button works by initially hiding all active grids, and then toggle their visibility via the onclick event of the button. It makes perfect sense to initially hide all of your GridSquare objects in the scene to begin with, as if they are active to begin with, you will see them for a - [Introduction](https://golemitegames.com/index.php/docs/introduction-10/) - Remove mode enables the Object Remover script and should be placed onto a button. You will need an Object Remover in the scene for this button to work. It also disables any previews from the Grid Selector. - [General Settings](https://golemitegames.com/index.php/docs/general-settings-9/) - GridObjectOptions allows the use of showing a menu on object select and moving an object from its current position. This is of course be expanded to include many other options depending on your game type. You may wish to add an upgrade function here, or include an option to use the object remover to remove - [General Settings](https://golemitegames.com/index.php/docs/general-settings-8/) - The Object Remover when enabled, will highlight any object with the Grid Object class attached to it presuming the Remove Preview Mat is assigned. The Object Placer adds this class automatically on object creation. When hovered over one of these objects, left-clicking will delete the objects themselves, and remove them from the Grid Square they - [General Settings](https://golemitegames.com/index.php/docs/general-settings-7/) - The Object Selector allows the use of different materials and a canvas to be applied when an object is 'Selected' or 'Hovered'. Left click an object to select it. Selected material This is the material that will be applied to an object once it is selected. To deselect, click on another object or on the - [General Settings](https://golemitegames.com/index.php/docs/general-settings-6/) - The SelectObject script should be placed on a button object. When clicking the button this will pass the assigned object under the prefab field to the Grid Selector (if in the scene) to use for various functions such as placing the object and previewing it. Prefab The object to be passed for placing and preview - [Building Time Settings](https://golemitegames.com/index.php/docs/building-time-settings/) - Building time settings only happen if you set a Build Time greater than 0 in the SelectObjectBtn. Timer canvas This takes in a canvas element, that will display while the object is being built. It could be one of the provided TimerCanvas prefabs or something different entirely that you wish to display while it is - [General Settings](https://golemitegames.com/index.php/docs/general-settings-5/) - Here you can adjust the basic settings of the Object Placer Placement type There a currently four different options of how you would like to place objects. Place multiple This mode allows for clicking multiple times to place your preview object. It will only deselect when you right click or hit escape. Place One This - [Invalid Placement Feedback](https://golemitegames.com/index.php/docs/invalid-placement-feedback/) - Settings of what to show when a cell is full. Invalid placement feedback Toggles the use of invalid placement feedback. Off will show nothing on a tile that is full. show invalid preview obj If enabled, shows the preview object on an invalid cell. Invalid placement mat The material to apply to the grid selector - [Grid Selector Tile](https://golemitegames.com/index.php/docs/grid-selector-tile/) - These are settings directly related to grid tile. Hide selector on preview When a preview object is active, hide the selector. This disables the mesh renderer. It will automatically show the selector when there is no preview object. Hover distance Apply a Y axis offset to the selector tile. - [General settings](https://golemitegames.com/index.php/docs/general-settings-4/) - Here you can adjust the basic settings of the Grid Selector. Often in the documentation the preview object is mentioned. This is the object that is created to 'preview' what you will be placing down. Smooth Move This enables the selector and preview object to transition from one point to the next rather than teleporting - [General settings](https://golemitegames.com/index.php/docs/general-settings-3/) - Here you can adjust your basic settings of the grid itself. Visual Only Visual only will not build a collider to the grid, allowing that grid to remain undetectable by any other class. This can be used to stack grids for example to create your desired effect. Note that when stacking grids, it is best - [Save/Load/Preconfiguration](https://golemitegames.com/index.php/docs/save-load-preconfiguration/) - Here you can adjust all settings related to saving, loading and setting up your pre configured grids for 'levels'. Grid ID The Grid ID located just under the save and load tab is very important as this is what is used in the file name for saving, loading and preconfigurations. By default, the grid creates - [Scripting](https://golemitegames.com/index.php/docs/scripting/) - Public methods There are several public methods that can be called from the Timer script. First of all, make sure to get a reference to the Timer class in your preferred method. double GetRemainingSeconds() This will return the number of remaining seconds. For example, you can make a check every second to see if the - [Customise](https://golemitegames.com/index.php/docs/customise/) - Under the customise drop-down there are a few options to change how the timer functions. Count method An option to count down or up. If you choose to count down, the time on time start is the time you set in Set time. If you choose to count up, the time will start at 0 - [Display](https://golemitegames.com/index.php/docs/display/) - Display format Under the display drop-down, there are options to not display certain parameters such as days or milliseconds. Depending on how you want to view the timer, you can select any combination of days, hours, minutes, seconds and milliseconds, however, the other display options have some limitations. Please note, if you are hiding something - [Set time](https://golemitegames.com/index.php/docs/set-time/) - Days, Hours, Minutes and Seconds Under the set time drop-down you can select the amount of time to set. This will be reflected in the Time in seconds remaining. The timer is set up to do all the calculations in seconds, using Time.deltaTime. This keeps it frame rate independent when being used of many different - [Setting up](https://golemitegames.com/index.php/docs/setting-up/) - Getting started Please note, make sure to be working within the canvas if you are displaying a visual timer. You could use the timer functions to work with whatever elements you want through scripting. See the scripting section for more information. There are three main ways to apply the timer:1. The first is to simply - [Introduction](https://golemitegames.com/index.php/docs/usage/) - TimersMadeEasy is a quick and easy way to set up customised timers with a few clicks. It has some customisation to get the look of the timer you really want, set up with some ready made prefabs ready to drop in to your project. This project has been set up to work in the canvas - [Limitations](https://golemitegames.com/index.php/docs/limitations/) - There are some limitations when using grid builder which is outlined in the following article. Most of what is built can be expanded however, see ‘Expanding’. Grid size Although this system is set up to run smoothly on most devices, increasing cell counts to high numbers especially on a single cell or chequered mode will - [Setup auto cell blocking](https://golemitegames.com/index.php/docs/setup-auto-cell-blocking/) - Naming and setup for layers Set up a new layer and call it ground or something similar. Assign this layer to your physical ground object, making sure it has a collider or mesh collider on it. A mesh collider will work best for single objects that have dips or cliffs. Adding and placing the grid - [Setup auto cell blocking](https://golemitegames.com/index.php/docs/setup-auto-cell-blocking-2/) - Basics Naming and setup for layers Set up a new layer and call it ground or something similar. Assign this layer to your physical ground object, making sure it has a collider or mesh collider on it. A mesh collider will work best for single objects that have dips or cliffs. Adding and placing the - [Set up from scratch](https://golemitegames.com/index.php/docs/set-up-from-scratch/) - Setting up the grid Create a new empty gameobject, and add the 'GridSquare' script. If choosing this way, you will need to link up a gridCell prefab from /Prefabs/GridCells if in single-cell mode, or apply a 'Simple' material from /Materials/Grid if in simple mode. Feel free to play around with the initial settings to align - [Quick setup](https://golemitegames.com/index.php/docs/quick-setup/) - Placing a grid Navigate to /Prefabs/WholeGrids, drag in one of the premade grids and adjust the General settings such as height, width and cellSize. Best to keep the cellSize at 1 = 1 metre. However, everything will adjust if you decide to change it. If you want the grid to be above some existing terrain, - [Debug](https://golemitegames.com/index.php/docs/debug-2/) - Two simple tools to use for use in debugging. Remember these will impact performance if used on large grids as they draw text in the scene view. Draw Cell Positions Checking this will enable you to view the centre position of each cell, and ultimately the position that is being checked to see if the - [Debug](https://golemitegames.com/index.php/docs/debug/) - Two simple tools to use for use in debugging. Remember these will impact performance if used on large grids as they draw text in the scene view. Draw cell positions Checking this will enable you to view the centre position of each cell, and ultimately the position that is being checked to see if the - [Prefabs](https://golemitegames.com/index.php/docs/prefabs/) - The Simple grid type does not use this method of creating the grid so prefabs are ignored. The prefabs are the cells to be used if they are filled. If they are not, the grid will still run, but just leave the cell without a physical object in it. If Auto Cell Blocking is on, - [Prefabs](https://golemitegames.com/index.php/docs/prefabs-2/) - The Simple grid type does not use this method of creating the grid so prefabs are ignored. The prefabs are the cells to be used during the build process. If there is no prefab, the grid will still run, but just leave the cell without a physical object in it. If Auto Cell Blocking is - [Auto cell block](https://golemitegames.com/index.php/docs/auto-cell-block/) - This feature blocks cells by marking the cell as used. This in turn gives some freedom when building grids around other objects like rocks or cliffs. It also has the innate ability to create the cells in any shape you like, such as a layout of a house, town, ship, or any other design you - [General settings](https://golemitegames.com/index.php/docs/general-settings/) - Here you can adjust your basic settings of the grid itself. Grid width How many grid cells wide should the grid be on the X axis. Please see Limitations for advice on maximum sizes. Grid height How many grid cells high should the grid be on the Z axis. Please see Limitations for advice on - [General settings](https://golemitegames.com/index.php/docs/general-settings-2/) - Here you can adjust the basic settings of the Grid Selector. Smooth Move This enables the selector to transition from one point to the next rather than teleporting to its position. Move Speed Sets the speed of the Smooth Move. A lower value slows down the transition. Hover Distance How much on the Y-axis to - [Introduction](https://golemitegames.com/index.php/docs/introduction-7/) - The Object Remover when enabled, will highlight any object with the Grid Object class attached to it presuming the Remove Preview Mat is assigned. The Object Placer adds this class automatically on object creation. When hovered over one of these objects, left-clicking will delete the objects themselves, and remove them from the Grid Square they - [Auto Cell Block](https://golemitegames.com/index.php/docs/auto-cell-block-2/) - This feature blocks cells by marking the cell as used. This in turn gives some freedom when building grids around other objects like rocks or cliffs. It also has the innate ability to create the cells in any shape you like, such as a layout of a house, town, ship, or any other design you - [Placing objects that are larger than 1 cell.](https://golemitegames.com/index.php/docs/placing-objects-bigger-than-1-cell-large/) - By default this is not a feature of grid builder, however, if you are comfortable diving into C# code then below is a brief explanation on how you could expand grid builder. Bear in mind Grid builder 2 set to release in late April will include this feature and many more. First of all, you - [Troubleshooting](https://golemitegames.com/index.php/docs/troubleshooting-2/) - Why does my grid not display anything? Grid builder requires a prefab to display as the grid cell if the mode is set to single cell or checkered. If in simple mode you will need to have a material on the grids mesh renderer. If you are still not seeing anything cells, chances are you - [RemoveMode](https://golemitegames.com/index.php/docs/removemode/) - public void DisableRemoveMode() Turns the Object Remover script off. //Turns off the object remover RemoveMode removeMode; void Start() { removeMode.DisableRemoveMode(); } public void EnableRemoveMode() Turns the Object Remover script on. //Turns on the object remover RemoveMode removeMode; void Start() { removeMode.EnableRemoveMode(); } public void ChangeText() Updates the text on the attached text component depending on - [GridObject](https://golemitegames.com/index.php/docs/gridobject/) - public void SetObjectGridSquare(GridSquare grid) Sets this object's grid to the provided one. This method is called when the object is placed. //Sets the object GridSquare GridSquare grid; GridObject gridObj; void Start() { gridObj.SetObjectGridSquare(grid); } public GridSquare GetObjectGridSquare() Returns this objects grid. //Gets the object GridSquare GridSquare grid; GridObject gridObj; void Start() { grid = gridObj.GetObjectGridSquare(); - [GridSquare](https://golemitegames.com/index.php/docs/scripting-2/) - public bool CheckCellStatus(Vector3 cellPos) This function returns true if the given key (cellPos) is found in the dictionary and that position's value is null. It will return false if that keys value is any object except for null. If the value is null, it means the cell is marked as empty, if it is anything - [GridSelector](https://golemitegames.com/index.php/docs/gridselector/) - public void ChangeObjMat(GameObject obj, Material newMat) This will loop through all children of the obj including itself and through all assigned materials and assign the newMat to each of them. //Changes the obj material to something else. GridSelector gridSelector; void Start() { gridSelector.ChangeObjMat(myObjectToChange, invalidMaterial); } public void DeselectPreview() This function destroys the preview object from - [ObjectPlacer](https://golemitegames.com/index.php/docs/objectplacer/) - public void PlaceObject(GameObject obj, Vector3 placePos, GridSquare grid, int layer) This function places the object on the grid and changes the layer back to the original layer the object was on. You will need the obj, its position to place it, the grid to change the cell status and the object's original layer. It also - [Introduction](https://golemitegames.com/index.php/docs/introduction-8/) - There are some useful public functions included in the scripts that come with this package which could come in useful in whatever application this is being used for. This system uses Clamped Vector3's as keys in a dictionary with the corresponding game object if there is one as the value. If there is no game - [Introduction](https://golemitegames.com/index.php/docs/introduction-4/) - The SelectObject script should be placed on a button object. When clicking the button this will pass the assigned object under the prefab field to the Grid Selector (if in the scene) to use for various functions such as placing the object and previewing it. Prefab The object to be passed for placing and preview - [Introduction](https://golemitegames.com/index.php/docs/introduction-6/) - Remove mode enables the Object Remover script and should be placed onto a button. It also disables any previews from the Grid Selector. - [Introduction](https://golemitegames.com/index.php/docs/introduction-5/) - This script is applied to any objects placed down on the grid. Its one and only purpose are to store a reference to the grid it was placed on. - [Introduction](https://golemitegames.com/index.php/docs/introduction-3/) - The Object Placer script is a very simple one function script that actually handles the placing of the object down on the Grid. It marks the cell as now full and creates an instance of the preview object from the Grid Selector. It also has the function of attaching the Grid Object script to any - [Introduction](https://golemitegames.com/index.php/docs/introduction-2/) - The grid selector object needs a mesh filter component and a mesh renderer. Both will be added when adding the Grid Selector script to an object. You can find meshes in /Meshes/GridSelectors and the material in /Materials/GridSelector. This allows you to see a visual representation of moving on the grid. It also allows you if - [Introduction](https://golemitegames.com/index.php/docs/introduction/) - Grid Builder is a quick and convenient way of creating many multi-purpose grid systems with built-in placement and removal logic. Tower defence, strategy, real-time strategy, simulation, construction, tabletop games plus many more genres would find this system useful. With simple mode, you could even develop a painting or creation app using the cells as pixels. - [Troubleshooting](https://golemitegames.com/index.php/docs/troubleshooting/) - My timer doesn't display Make sure you have placed the timer under the canvas object and that the timer is linked to an output. Try and drag in a prefab under a canvas element if you still have trouble. How can I start my timer at a certain time? You can start your timer when ## Categories - [3D Assets](https://golemitegames.com/index.php/category/3d-assets/) - [Unity Components](https://golemitegames.com/index.php/category/unity-components/) ## Docs Categories - [Timers Made Easy](https://golemitegames.com/index.php/docs-category/timersmadeeasy/) - [Grid Builder](https://golemitegames.com/index.php/docs-category/gridbuilder/) - [GridSquare](https://golemitegames.com/index.php/docs-category/gridsquare/) - [GridSelector](https://golemitegames.com/index.php/docs-category/gridselector/) - [ObjectPlacer](https://golemitegames.com/index.php/docs-category/objectplacer/) - [SelectObject](https://golemitegames.com/index.php/docs-category/selectobject/) - [GridObject](https://golemitegames.com/index.php/docs-category/gridobject/) - [RemoveMode](https://golemitegames.com/index.php/docs-category/removemode/) - [ObjectRemover](https://golemitegames.com/index.php/docs-category/objectremover/) - [Scripting](https://golemitegames.com/index.php/docs-category/scripting/) - [Grid Builder 2](https://golemitegames.com/index.php/docs-category/gridbuilder2/) - [GridSquare](https://golemitegames.com/index.php/docs-category/gridsquare-gridbuilder2/) - [GridSelector](https://golemitegames.com/index.php/docs-category/gridselector-gridbuilder2/) - [ObjectPlacer](https://golemitegames.com/index.php/docs-category/objectplacer-gridbuilder2/) - [SelectObject](https://golemitegames.com/index.php/docs-category/selectobject-gridbuilder2/) - [ObjectRemover](https://golemitegames.com/index.php/docs-category/objectremover-gridbuilder2/) - [RemoveMode](https://golemitegames.com/index.php/docs-category/removemode-gridbuilder2/) - [BuildMode](https://golemitegames.com/index.php/docs-category/buildmode/) - [ObjectSelector](https://golemitegames.com/index.php/docs-category/objectselector/) - [GridObjectOptions](https://golemitegames.com/index.php/docs-category/gridobjectoptions/) - [Scripting](https://golemitegames.com/index.php/docs-category/scripting-gridbuilder2/) - [Resource And Production](https://golemitegames.com/index.php/docs-category/resource-and-production/) ## Docs Tags - [Doc-Post](https://golemitegames.com/index.php/docs-tag/doc-post/)