Search Unity

Question need help with save and load a dictionary containing scriptableObjects

Discussion in 'Scripting' started by NEo365, May 26, 2023.

  1. NEo365

    NEo365

    Joined:
    Jun 8, 2017
    Posts:
    1
    using UnityEngine;
    using System;
    using System.Collections.Generic;

    public class GameManager : MonoBehaviour
    {
    public Dictionary<VehicleData, Dictionary<WeaponType, WeaponLoadout>> weaponBase = new Dictionary<VehicleData, Dictionary<WeaponType, WeaponLoadout>>();
    }

    public class GarageSystem : MonoBehaviour
    {
    public Dictionary<VehicleData, Dictionary<WeaponType, WeaponLoadout>> equippedWeapons = GameManager.Instance.weaponBase ?? new Dictionary<VehicleData, Dictionary<WeaponType, WeaponLoadout>>();
    }

    [System.Serializable]
    [CreateAssetMenu(fileName = "VehicleData", menuName = "Vehicle Data")]
    public class VehicleData : ScriptableObject
    {
    public string carName;
    public GameObject prefab;
    public int cost;
    }

    [System.Serializable]
    public enum WeaponType
    {
    Primary,
    Secondary,
    Melee,
    }

    [CreateAssetMenu(fileName = "WeaponData", menuName = "WeaponData")]
    [System.Serializable]
    public class WeaponData : ScriptableObject
    {
    public GameObject weaponPrefab;
    public int cost;
    public string weaponName;
    public WeaponType weaponType;
    }

    public class WeaponLoadout
    {
    public List<WeaponData> unlockedWeapons { get; set; }
    public WeaponData equippedWeapon { get; set; }
    }