У меня есть скажем так бд для оружия реализованная через ScriptableObject
Код
using System.Collections.Generic;
using UnityEngine;
 [CreateAssetMenu(fileName = "База данных оружия", menuName = "Weapon/db", order = 1)]
public class WeaponDataBase : ScriptableObject
{
    public List<PistolWeapon> listpw = new List<PistolWeapon>();
    public List<Automato> listAutomato = new List<Automato>();
    public List<Granade> listgrenade = new List<Granade>();
}
вот скрин самой бд 
и есть скрипт где я храню эту всю бд как бы на сцене в виде контроллера(который заполняется тогда когда сцена запущенна)
Код
public class CurentDataBase : MonoBehaviour
{
    public WeaponDataBase WDB;
    public List<Weapon> listWeapon = new List<Weapon>();
    private void Awake()
    {
        add_to_total_listPistol(WDB.listpw);
        add_to_total_listAutomato(WDB.listAutomato);
        add_to_total_listGrenade(WDB.listgrenade);
    }
    void add_to_total_listPistol<T>(List<T> itemlisti) where T : Weapon // добавление предметов в колекцию без приведения типа
    {
        foreach (var cur_it in itemlisti)
        {
            listWeapon.Add(cur_it);
        }
    }
    void add_to_total_listAutomato<T>(List<T> itemlisti) where T : Weapon // добавление предметов в колекцию без приведения типа
    {
        foreach (var cur_it in itemlisti)
        {
            listWeapon.Add(cur_it);
        }
    }
    void add_to_total_listGrenade<T>(List<T> itemlisti) where T : Weapon // добавление предметов в колекцию без приведения типа
    {
        foreach (var cur_it in itemlisti)
        {
            listWeapon.Add(cur_it);
        }
    }
}
скрин так же прикрепил 
Вопрос вот в чем
Как можно реализовать смену оружия?
Что бы например при нажатии на 1(Alpha1 в юньке) например брался PKM тот же, а при нажатии на 2(Alpha2) например глок и т.д