Weapons; protected override void PopulateData(ParsedDataList data) { if (data.TryGetParsedData(0, out var weaponsData)) { EasyParser.ParseRowsData(weaponsData, Weapons, i => { var weapon = Weapons.Find(x => x.Id == weaponsData.GetString(i, 0)); if (weapon == null) { return null; } weapon.Name = weaponsData.GetString(i, 1); weapon.Damage = weaponsData.GetInt(i, 2); weapon.Range = weaponsData.GetFloat(i, 3); weapon.FireRate = weaponsData.GetFloat(i, 4); return weapon; }, true); } } }"> Weapons; protected override void PopulateData(ParsedDataList data) { if (data.TryGetParsedData(0, out var weaponsData)) { EasyParser.ParseRowsData(weaponsData, Weapons, i => { var weapon = Weapons.Find(x => x.Id == weaponsData.GetString(i, 0)); if (weapon == null) { return null; } weapon.Name = weaponsData.GetString(i, 1); weapon.Damage = weaponsData.GetInt(i, 2); weapon.Range = weaponsData.GetFloat(i, 3); weapon.FireRate = weaponsData.GetFloat(i, 4); return weapon; }, true); } } }"> Weapons; protected override void PopulateData(ParsedDataList data) { if (data.TryGetParsedData(0, out var weaponsData)) { EasyParser.ParseRowsData(weaponsData, Weapons, i => { var weapon = Weapons.Find(x => x.Id == weaponsData.GetString(i, 0)); if (weapon == null) { return null; } weapon.Name = weaponsData.GetString(i, 1); weapon.Damage = weaponsData.GetInt(i, 2); weapon.Range = weaponsData.GetFloat(i, 3); weapon.FireRate = weaponsData.GetFloat(i, 4); return weapon; }, true); } } }">
[CreateAssetMenu(menuName = "Create ParseInToSeparateObjects", fileName = "ParseInToSeparateObjects", order = 0)]
public class WeaponDatabase : ParsedScriptableObject
{
    public List<WeaponData> Weapons;
    
    protected override void PopulateData(ParsedDataList data)
    {
        if (data.TryGetParsedData(0, out var weaponsData))
        {
            EasyParser.ParseRowsData(weaponsData, Weapons, i =>
            {
                var weapon = Weapons.Find(x => x.Id == weaponsData.GetString(i, 0));
                if (weapon == null)
                {
                    return null;
                }

                weapon.Name = weaponsData.GetString(i, 1);
                weapon.Damage = weaponsData.GetInt(i, 2);
                weapon.Range = weaponsData.GetFloat(i, 3);
                weapon.FireRate = weaponsData.GetFloat(i, 4);
                return weapon;
            }, true);
        }
    }
}

Differences Between WeaponDatabase and CharactersDataBase Parsing

The key distinction between the parsing in WeaponDatabase and CharactersDataBase lies in data update logic and behavior for existing objects:

  1. Data Updating:
  2. Behavior with Existing Data:
  3. Parsing Utility Usage:

Description for WeaponDatabase

The WeaponDatabase class is a specialized implementation of ParsedScriptableObject designed to manage and update weapon data within a Unity project. Unlike CharactersDataBase, which recreates its data list on each parse, this class works with an existing list of weapons (Weapons) and updates their properties based on parsed data.


Fields

Weapons


Methods

PopulateData(ParsedDataList data)