# Help scriptable objects

**URL:** https://discussions.unity.com/t/help-scriptable-objects/939518
**Category:** Scripting
**Tags:** Scripting, Question
**Created:** [February 7, 2024, 7:25pm UTC](https://discussions.unity.com/t/help-scriptable-objects/939518 "2024-02-07T19:25:07Z")
**Posts on this page:** 3
**Page:** 1

<div class="post-metadata">

### Author: ![paoran983](https://avatars.discourse-cdn.com/v4/letter/p/9e8a1a/32.png) [@paoran983](https://discussions.unity.com/u/paoran983)
#### Post date: [February 7, 2024, 7:25pm UTC](https://discussions.unity.com/t/help-scriptable-objects/939518/1 "2024-02-07T19:25:07Z")

</div>

I am pretty new to Unity and I am trying to create an object that can hold multiple abilities, which are made using scriptable objects. I want to be able to upgrade these objects and have them gain more abilities. As well as being able to pick up and transfer the item between inventories, which I have set up using scriptable objects, while still keeping the abilities gained from previous upgrades. Should I use scriptable objects to make this object? Or is there a better way of doing this? I’m open to any suggestions

---

<div class="post-metadata">

### Author: ![Kurt-Dekker](https://dub1.discourse-cdn.com/unity/user_avatar/discussions.unity.com/kurt-dekker/32/101578_2.png) [@Kurt-Dekker](https://discussions.unity.com/u/Kurt-Dekker)
#### Post date: [February 7, 2024, 9:10pm UTC](https://discussions.unity.com/t/help-scriptable-objects/939518/2 "2024-02-07T21:10:34Z")

</div>

ScriptableObject usage in RPGs:

> [@ScriptableObjects for an RPG with multiple units in your team](https://discussions.unity.com/t/798767/2):
>
> The most important concept about ScriptableObjects (SOs) is that they are custom-shaped blobs of data that you can edit inside the Unity inspector. The serialized values inside a SO map directly to that created asset on disk, the instance of the SO. When your game runs, it needs some data. One way to get that data is to hard-code it in the code. That is bad because when you change it, you need to change code. That’s why we have things like a SO to configure existing unchanging shipped code. W…

> [@Creating lookup tables that can be assigned in the inspector.](https://discussions.unity.com/t/803356/2):
>
> This looks like a job tailor made for ScriptableObjects! ScriptableObjects are basically structured blobs of predefined data to help you create content for your game. For instance if I had a ScriptableObject called Weapon, it might have these properties: name detailed name description damage toughness weight what it looks like in the inventory what model it uses in game what animations the player uses to swing it I would create many of these Weapons, each one a file on disk (also called an…

---

<div class="post-metadata">

### Author: ![spiney199](https://dub1.discourse-cdn.com/unity/user_avatar/discussions.unity.com/spiney199/32/880897_2.png) [@spiney199](https://discussions.unity.com/u/spiney199)
#### Post date: [February 8, 2024, 1:25am UTC](https://discussions.unity.com/t/help-scriptable-objects/939518/3 "2024-02-08T01:25:21Z")

</div>

There was some discussion on this here: [Best practices for managing large amounts of ScriptableObject data?](https://discussions.unity.com/t/939434)

If you intend for your abilities to be mutable, then they would be better as plain C# objects, with scriptable objects as factories for said abilities. A container for said abilities/upgrades could also be a plain C# object, which should make saving the current state of abilities to disk easier then. Then that container object can just be used in a monobehaviour.
