public static string SerializeActionBar(ActionBarSerialization abs)
    {
        string result = "";

        for (int i = 0; i < abs.grid.Count; i++)
        {
            if (abs.grid[i].transform.GetChild(0).childCount > 0)
            {
                //if we are here, it means that this slot has assigned item
                result += "1";
                result += abs.grid[i].GetComponent <ActionBarSlot>().originalItem.itemX;
                result += abs.grid[i].GetComponent <ActionBarSlot>().originalItem.itemY;
            }
            else
            {
                result += "000";
            }
        }

        return(result);
    }
    public static void DeserializeActionBar(string actionBar, Inventory inventory, ActionBarSerialization abs)
    {
        bool noItem               = false;
        int  currentX             = -5;
        int  currentY             = -5;
        int  currentActionBarSlot = -1;

        for (int i = 0; i < actionBar.Length; i++)
        {
            if (i % 3 == 0)
            {
                currentActionBarSlot++;
                if (actionBar[i] == '0')
                {
                    noItem = true;
                }
                else
                {
                    noItem = false;
                }
            }
            else if (i % 3 == 1)
            {
                if (!noItem)
                {
                    currentX = (int)Char.GetNumericValue(actionBar[i]);
                }
            }
            else if (i % 3 == 2)
            {
                if (!noItem)
                {
                    currentY = (int)Char.GetNumericValue(actionBar[i]);
                    inventory.MousePickItem(inventory.FindItem(currentX, currentY));
                    inventory.MousePutDownOnActionBar(abs.grid[currentActionBarSlot].GetComponent <ActionBarSlot>());
                }
            }
        }
    }