💦 FULL SET: Post/ - Full Archive

Skip to main content

You should not be storing the full sprite in string, you should create some kind of ID for a sprite in a scriptableObject or something and save that in the extras. I created a little class that helps me store data in a single string in a KvP way, hope it helps:

public class SingleStringKvP
{
    private readonly Dictionary<string, string> _kvPairs = new();
        private const char PairSeparator = ';';
    private const char KeyValueSeparator = ':';
        public SingleStringKvP(string startingValue)
    {
        Parse(startingValue);
    }
    public SingleStringKvP()
    {
    }
        public void AddValue(string key, string value)
    {
        _kvPairs[key] = value;
    }
        public string GetValue(string key)
    {
        return _kvPairs.TryGetValue(key, out var value) ? value : string.Empty;
    }
        public override string ToString()
    {
        var builder = new StringBuilder();
        foreach (var kvp in _kvPairs)
        {
            if (builder.Length > 0)
                builder.Append(PairSeparator);
            builder.Append($"{kvp.Key}{KeyValueSeparator}{kvp.Value}");
        }
        return builder.ToString();
    }
        private void Parse(string startingValue)
    {
        if (string.IsNullOrEmpty(startingValue)) return;
        var pairs = startingValue.Split(PairSeparator);
        foreach (var pair in pairs)
        {
            var kv = pair.Split(KeyValueSeparator);
            if (kv.Length == 2)
            {
                var key = kv[0];
                var value = kv[1];
                AddValue(key, value);
            }
        }
    }
}