> For the complete documentation index, see [llms.txt](https://docs.greenhellmodding.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.greenhellmodding.com/modding-tutorials/how-to-create-an-assetbundle.md).

# How to create an AssetBundle

Let's get started with the requirements! \
For this tutorial you will need the same requirements as the first tutorial.

**1)** First, create a new Unity project with the same version as the one required in [**How to create a mod project**](https://docs.greenhellmodding.com/modding-tutorials/how-to-create-a-mod-project).

**2)** Then once the first step is done, download [this file](https://www.raftmodding.com/TeKGameRMods/AssetBundleBuilderByTeK.zip) and place it into your Unity Project as shown below. This will allow you to build your asset bundle file. &#x20;

<div align="left"><img src="/files/-M5jGn6AxKD9spuzVtQW" alt=""></div>

**3)** Add your stuff to the asset bundle as shown below. &#x20;

![](/files/-M5jGqfSMvjFkLxtHrD6)

**4)** Once you have everything in your assetbundle, build it by right clicking anywhere and clicking on **Build AssetBundles** as shown below. &#x20;

<div align="left"><img src="/files/-M5jGtRxnif7PyECN-xZ" alt=""></div>

**5)** If your assetbundle has succeeded building you should be able to find it in **Assets/AssetBundles**; Once you found it, copy it into your mod project folder where your .cs files and your modinfo.json file are located as shown below. &#x20;

<div align="left"><img src="/files/-M5jHBoAkHlMElnkvpEb" alt=""></div>

**6)** Now let's load it into the game using our previous mod made in the [**How to create a mod project**](https://docs.greenhellmodding.com/modding-tutorials/how-to-create-a-mod-project) tutorial. Open your mod project and change your start method type from **`void`** to **`IEnumerator`** and copy the code below into the start method as shown below; You will also need to create a new variable in your mod to be able to access the asset bundle from anywhere in your mod.

{% tabs %}
{% tab title="Help Image" %}
![](/files/-M5jHm-2JfRQ2XrbPOyW)

{% hint style="info" %}
I&#x66;**`IEnumerator`** is underlined in red, simply add **`using System.Collections;`**&#x61;t the top of your mod file.
{% endhint %}
{% endtab %}

{% tab title="Code" %}

```csharp
AssetBundle asset;

public IEnumerator Start()
{
    AssetBundleCreateRequest request = AssetBundle.LoadFromMemoryAsync(GetEmbeddedFileBytes("tutorial.assets"));
    yield return request;
    asset = request.assetBundle;

}
```

{% endtab %}
{% endtabs %}

**7)** Loading an asset bundle is good, but we also need to unload it when we unload our mod. So, to do that in your ***`OnModUnload`*** method simply add **`asset.Unload(true);`** as shown below. &#x20;

<div align="left"><img src="/files/-M5jI38w3Ky0YxQQdwSW" alt=""></div>

**8)** Now, to load something from our asset bundle simply use **`asset.LoadAsset<T>("assetname")`** for example to load the ***RedCube*** that i added into the example asset bundle earlier i can just do **`asset.LoadAsset<GameObject>("RedCube")`**.

And here is it! As this can be a bit complicated if you encounter any issue or if you are blocked at a specific step, feel free to join our [Modding Discord](https://www.greenhellmodding.com/discord) and ask for help in #support.
