Skip to main content
Clarified title to reflect core of question.
Link
Anko
  • 13.5k
  • 10
  • 56
  • 82

Using List.Sort in In Unity, why do I get a "does not implement right interface" error when trying to sort my list of objects?

Removing content that was not impertinent to the question, and as such, was counter productive towards a minimal viable example
Source Link
Gnemlock
  • 5.3k
  • 5
  • 30
  • 60

I am trying to create a crafting panel that sorts the list of items you can make alphabetically, yet I cannot figure out why .Sort() is not working. 

What I have is a game object that holds a list of all the items you can make and the requirements, then in my crafting script I access the game object for the list and display the info. 

Everything works fine until I try to sort anything. craftDatabase is what I need to be sorted. Also, it needs to be sorted by ItemID.

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class CraftDatabase : MonoBehaviour 
{
    public List<Blueprint> craftDatabase = new List<Blueprint>();
}

[System.Serializable]
public class Blueprint
{
    public string itemId;
    public int itemAmount;
    public float itemCraftTime = 1f;
    public CraftPanel.subsections subsection;
    public CraftPanel.workstations workStation;
    public List<requiredItem> requiredItems = new List<requiredItem>();

    [HideInInspector]        
    public string desc;

    [System.Serializable]
    public struct requiredItem
    {
        public string itemId;
        public int itemAmount;
    }
    
    public Blueprint()
    {
    }
}

An example of a Blueprint list.

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;

public class CategoryPanel : MonoBehaviour 
{
    public CraftPanel.subsections subsection;    
    public GameObject craftButton;  
  
    [HideInInspector]
    public Button categoryBut;

    private GameObject craftPanel;
    private CraftPanel craft;

    private Blueprint activeBlueprint;
    private InputField inputAmount;

    private CraftDatabase craftDatabase;
    private ItemDatabase database;

    public void Init()
    {
        craftDatabase = GameObject.Find("Database").GetComponent<CraftDatabase>();
        database = GameObject.Find("Database").GetComponent<ItemDatabase>();

        craftPanel = GameObject.Find("Craft Panel").gameObject;
        craft = craftPanel.GetComponent<CraftPanel>();

        categoryBut.onClick.AddListener(delegate { OpenCategory(gameObject); });

        for (int i = 0; i < craftDatabase.craftDatabase.Count; i++)
        {
            Blueprint blueprint = craftDatabase.craftDatabase[i];

            if (blueprint.subsection == subsection)
            {
                Item item = database.FetchItemByID(blueprint.itemId);
                GameObject craftObj = Instantiate(craftButton);

                craftObj.transform.SetParent(transform, false);

                string desc = item.Title;

                if (blueprint.itemAmount > 1) 
                    desc += " x" + blueprint.itemAmount;
            
                craftObj.transform.GetChild(0).GetComponent<Text>().text = desc;
                blueprint.desc = desc;
                craftObj.transform.GetChild(1).GetComponent<Image>().sprite 
                    = item.Sprite;
                craftObj.GetComponent<CraftButton>().itemID = item.ID;

                craftObj.GetComponent<Button>().onClick
                    .AddListener(delegate { craft.OpenTooltip(blueprint); });
            }
        }
    }

    public void UpdatePanel(CraftPanel.workstations workStation)
    {
        bool mainActive = false;

        foreach (Transform child in transform)
        {
            for (int i = 0; i < craftDatabase.craftDatabase.Count; i++)
            {                
                Blueprint blueprint = craftDatabase.craftDatabase[i];
                string ID = child.GetComponent<CraftButton>().itemID;

                if (blueprint.itemId == ID)
                {
                    bool active = true;
                    string color = "<color=#ffffff>";

                    if ((blueprint.workStation & workStation) != 0)
                    {
                        for (int j = 0; j < blueprint.requiredItems.Count; j++)
                        {
                            if (!Global.inventoryControl
                                .CheckItemsInInventoryblueprint.requiredItems[j]
                                .itemId, blueprint.requiredItems[j].itemAmount))
                            {
                                color = "<color=#828282>";
                                break;
                            }
                        }
                    }
                    else
                        active = false;

                    child.transform.GetChild(0).GetComponent<Text>().text 
                        = color + blueprint.desc + "</color>";

                    GameObject obj = child.gameObject;

                    if (obj.activeSelf && !active)
                        craftPanel.transform.GetChild(0).GetComponent<ScrollRect>()
                            .verticalScrollbar.value = 1;

                    obj.SetActive(active);

                    if (active)                                           
                        mainActive = true;
                
                    break;
                }
            }
        }

        categoryBut.gameObject.SetActive(mainActive);
    }

    void OpenCategory(GameObject panel)
    {
        GridLayoutGroup grid = panel.GetComponent<GridLayoutGroup>();
        grid.enabled = !grid.enabled;

        if(grid.enabled)
            categoryBut.transform.GetChild(1).GetComponent<Text>().text = "-";
        else
            categoryBut.transform.GetChild(1).GetComponent<Text>().text = "+";
    }
}

I am trying to create a crafting panel that sorts the list of items you can make alphabetically, yet I cannot figure out why .Sort() is not working. What I have is a game object that holds a list of all the items you can make and the requirements, then in my crafting script I access the game object for the list and display the info. Everything works fine until I try to sort anything. craftDatabase is what I need to be sorted. Also, it needs to be sorted by ItemID.

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class CraftDatabase : MonoBehaviour 
{
    public List<Blueprint> craftDatabase = new List<Blueprint>();
}

[System.Serializable]
public class Blueprint
{
    public string itemId;
    public int itemAmount;
    public float itemCraftTime = 1f;
    public CraftPanel.subsections subsection;
    public CraftPanel.workstations workStation;
    public List<requiredItem> requiredItems = new List<requiredItem>();

    [HideInInspector]        
    public string desc;

    [System.Serializable]
    public struct requiredItem
    {
        public string itemId;
        public int itemAmount;
    }
    
    public Blueprint()
    {
    }
}

An example of a Blueprint list.

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;

public class CategoryPanel : MonoBehaviour 
{
    public CraftPanel.subsections subsection;    
    public GameObject craftButton;  
  
    [HideInInspector]
    public Button categoryBut;

    private GameObject craftPanel;
    private CraftPanel craft;

    private Blueprint activeBlueprint;
    private InputField inputAmount;

    private CraftDatabase craftDatabase;
    private ItemDatabase database;

    public void Init()
    {
        craftDatabase = GameObject.Find("Database").GetComponent<CraftDatabase>();
        database = GameObject.Find("Database").GetComponent<ItemDatabase>();

        craftPanel = GameObject.Find("Craft Panel").gameObject;
        craft = craftPanel.GetComponent<CraftPanel>();

        categoryBut.onClick.AddListener(delegate { OpenCategory(gameObject); });

        for (int i = 0; i < craftDatabase.craftDatabase.Count; i++)
        {
            Blueprint blueprint = craftDatabase.craftDatabase[i];

            if (blueprint.subsection == subsection)
            {
                Item item = database.FetchItemByID(blueprint.itemId);
                GameObject craftObj = Instantiate(craftButton);

                craftObj.transform.SetParent(transform, false);

                string desc = item.Title;

                if (blueprint.itemAmount > 1) 
                    desc += " x" + blueprint.itemAmount;
            
                craftObj.transform.GetChild(0).GetComponent<Text>().text = desc;
                blueprint.desc = desc;
                craftObj.transform.GetChild(1).GetComponent<Image>().sprite 
                    = item.Sprite;
                craftObj.GetComponent<CraftButton>().itemID = item.ID;

                craftObj.GetComponent<Button>().onClick
                    .AddListener(delegate { craft.OpenTooltip(blueprint); });
            }
        }
    }

    public void UpdatePanel(CraftPanel.workstations workStation)
    {
        bool mainActive = false;

        foreach (Transform child in transform)
        {
            for (int i = 0; i < craftDatabase.craftDatabase.Count; i++)
            {                
                Blueprint blueprint = craftDatabase.craftDatabase[i];
                string ID = child.GetComponent<CraftButton>().itemID;

                if (blueprint.itemId == ID)
                {
                    bool active = true;
                    string color = "<color=#ffffff>";

                    if ((blueprint.workStation & workStation) != 0)
                    {
                        for (int j = 0; j < blueprint.requiredItems.Count; j++)
                        {
                            if (!Global.inventoryControl
                                .CheckItemsInInventoryblueprint.requiredItems[j]
                                .itemId, blueprint.requiredItems[j].itemAmount))
                            {
                                color = "<color=#828282>";
                                break;
                            }
                        }
                    }
                    else
                        active = false;

                    child.transform.GetChild(0).GetComponent<Text>().text 
                        = color + blueprint.desc + "</color>";

                    GameObject obj = child.gameObject;

                    if (obj.activeSelf && !active)
                        craftPanel.transform.GetChild(0).GetComponent<ScrollRect>()
                            .verticalScrollbar.value = 1;

                    obj.SetActive(active);

                    if (active)                                           
                        mainActive = true;
                
                    break;
                }
            }
        }

        categoryBut.gameObject.SetActive(mainActive);
    }

    void OpenCategory(GameObject panel)
    {
        GridLayoutGroup grid = panel.GetComponent<GridLayoutGroup>();
        grid.enabled = !grid.enabled;

        if(grid.enabled)
            categoryBut.transform.GetChild(1).GetComponent<Text>().text = "-";
        else
            categoryBut.transform.GetChild(1).GetComponent<Text>().text = "+";
    }
}

I am trying to create a crafting panel that sorts the list of items you can make alphabetically, yet I cannot figure out why .Sort() is not working. 

What I have is a game object that holds a list of all the items you can make and the requirements, then in my crafting script I access the game object for the list and display the info. 

Everything works fine until I try to sort anything. craftDatabase is what I need to be sorted. Also, it needs to be sorted by ItemID.

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class CraftDatabase : MonoBehaviour 
{
    public List<Blueprint> craftDatabase = new List<Blueprint>();
}

[System.Serializable]
public class Blueprint
{
    public string itemId;
    public int itemAmount;
    public float itemCraftTime = 1f;
    public CraftPanel.subsections subsection;
    public CraftPanel.workstations workStation;
    public List<requiredItem> requiredItems = new List<requiredItem>();

    [HideInInspector]        
    public string desc;

    [System.Serializable]
    public struct requiredItem
    {
        public string itemId;
        public int itemAmount;
    }
    
    public Blueprint()
    {
    }
}
Grammar and punctuation; clarified question; format
Source Link
Gnemlock
  • 5.3k
  • 5
  • 30
  • 60

Unity3D C# Sort Using List.Sort in Unity

I am trying to create a crafting panel that sorts the list of items you can make alphabetically, yet I cannot figure out why .Sort() is not working. What I have is a gameobjectgame object that holds a list of all the items you can make and therethe requirements, then in my crafting script iI access the gameobjectgame object for the list and display the info. Now as it sits everythingEverything works fine until iI try to sort anything. craftDatabase is what iI need to be sorted. Also, it needs to be sorted by ItemID.

 
using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class CraftDatabase : MonoBehaviour {
{
    public List<Blueprint> craftDatabase = new List<Blueprint>();
}

[System.Serializable]
public class Blueprint
{
    public string itemId;
    public int itemAmount;
    public float itemCraftTime = 1f;
    public CraftPanel.subsections subsection;
    public CraftPanel.workstations workStation;
    public List<requiredItem> requiredItems = new List<requiredItem>();

    [HideInInspector]        
    public string desc;

    [System.Serializable]
    public struct requiredItem
    {
        public string itemId;
        public int itemAmount;
    }
    
    public Blueprint()
    {
    }
}

enter image description hereAn example of a Blueprint list.

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;

public class CategoryPanel : MonoBehaviour {
{
    public CraftPanel.subsections subsection;    
    public GameObject craftButton;  
  
    [HideInInspector]
    public Button categoryBut;

    private GameObject craftPanel;
    private CraftPanel craft;

    private Blueprint activeBlueprint;
    private InputField inputAmount;

    private CraftDatabase craftDatabase;
    private ItemDatabase database;

    public void Init()
    {
        craftDatabase = GameObject.Find("Database").GetComponent<CraftDatabase>();
        database = GameObject.Find("Database").GetComponent<ItemDatabase>();

        craftPanel = GameObject.Find("Craft Panel").gameObject;
        craft = craftPanel.GetComponent<CraftPanel>();

        categoryBut.onClick.AddListener(delegate { OpenCategory(gameObject); });

        for (int i = 0; i < craftDatabase.craftDatabase.Count; i++)
        {
            Blueprint blueprint = craftDatabase.craftDatabase[i];

            if (blueprint.subsection == subsection)
            {
                Item item = database.FetchItemByID(blueprint.itemId);
                GameObject craftObj = Instantiate(craftButton);

                craftObj.transform.SetParent(transform, false);

                string desc = item.Title; 

                if (blueprint.itemAmount > 1) 
                    desc += " x" + blueprint.itemAmount;
            
                craftObj.transform.GetChild(0).GetComponent<Text>().text = desc;
 
                blueprint.desc = desc;
                craftObj.transform.GetChild(1).GetComponent<Image>().sprite 
                    = item.Sprite;
                craftObj.GetComponent<CraftButton>().itemID = item.ID;

                craftObj.GetComponent<Button>().onClick
                    .AddListener(delegate { craft.OpenTooltip(blueprint); });
            }
        }
    }

    public void UpdatePanel(CraftPanel.workstations workStation)
    {
        bool mainActive = false;

        foreach (Transform child in transform)
        {
            for (int i = 0; i < craftDatabase.craftDatabase.Count; i++)
            {                
                Blueprint blueprint = craftDatabase.craftDatabase[i];
                string ID = child.GetComponent<CraftButton>().itemID;

                if (blueprint.itemId == ID)
                {
                    bool active = true;
                    string color = "<color=#ffffff>";

                    if ((blueprint.workStation & workStation) != 0)
                    {
                        for (int j = 0; j < blueprint.requiredItems.Count; j++)
                        {
                            if (!Global.inventoryControl
                                .CheckItemsInInventory(blueprintCheckItemsInInventoryblueprint.requiredItems[j]
                                .itemId, blueprint.requiredItems[j].itemAmount))
                            {
                                color = "<color=#828282>";
                                break;
                            }
                        }
                    }
                    else
                        active = false;

                    child.transform.GetChild(0).GetComponent<Text>().text 
                        = color + blueprint.desc + "</color>";

                    GameObject obj = child.gameObject;

                    if (obj.activeSelf && !active)
                        craftPanel.transform.GetChild(0).GetComponent<ScrollRect>()
                            .verticalScrollbar.value = 1;

                    obj.SetActive(active);

                    if (active)                                           
                        mainActive = true;
                
                    break;
                }
            }
        } 

        categoryBut.gameObject.SetActive(mainActive);
    }

    void OpenCategory(GameObject panel)
    {
        GridLayoutGroup grid = panel.GetComponent<GridLayoutGroup>();
        grid.enabled = !grid.enabled;

        if(grid.enabled)
            categoryBut.transform.GetChild(1).GetComponent<Text>().text = "-";
        else
            categoryBut.transform.GetChild(1).GetComponent<Text>().text = "+";
    }
}
 

When iI try to throw in craftDatabase.craftDatabase.Sort(); it gives me thethis error: ArgumentException: does not implement right interface

ArgumentException: does not implement right interface

if anymore info is needed please let me know.How do I fix this error to use Sort()?

Unity3D C# Sort

I am trying to create a crafting panel that sorts the list of items you can make alphabetically, yet I cannot figure out why .Sort() is not working. What I have is a gameobject that holds a list of all the items you can make and there requirements, then in my crafting script i access the gameobject for the list and display the info. Now as it sits everything works fine until i try to sort anything. craftDatabase is what i need to be sorted. Also it needs to be sorted by ItemID.

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class CraftDatabase : MonoBehaviour {

public List<Blueprint> craftDatabase = new List<Blueprint>();
}

[System.Serializable]
public class Blueprint
{
public string itemId;
public int itemAmount;
public float itemCraftTime = 1f;
public CraftPanel.subsections subsection;
public CraftPanel.workstations workStation;
public List<requiredItem> requiredItems = new List<requiredItem>();

[HideInInspector]
public string desc;

[System.Serializable]
public struct requiredItem
{
    public string itemId;
    public int itemAmount;
}
    
public Blueprint()
{
}
}

enter image description here

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;

public class CategoryPanel : MonoBehaviour {

public CraftPanel.subsections subsection;    
public GameObject craftButton;  
  
[HideInInspector]
public Button categoryBut;

private GameObject craftPanel;
private CraftPanel craft;

private Blueprint activeBlueprint;
private InputField inputAmount;

private CraftDatabase craftDatabase;
private ItemDatabase database;

public void Init()
{
    craftDatabase = GameObject.Find("Database").GetComponent<CraftDatabase>();
    database = GameObject.Find("Database").GetComponent<ItemDatabase>();

    craftPanel = GameObject.Find("Craft Panel").gameObject;
    craft = craftPanel.GetComponent<CraftPanel>();

    categoryBut.onClick.AddListener(delegate { OpenCategory(gameObject); });

    for (int i = 0; i < craftDatabase.craftDatabase.Count; i++)
    {
        Blueprint blueprint = craftDatabase.craftDatabase[i];

        if (blueprint.subsection == subsection)
        {
            Item item = database.FetchItemByID(blueprint.itemId);
            GameObject craftObj = Instantiate(craftButton);

            craftObj.transform.SetParent(transform, false);

            string desc = item.Title;
            if (blueprint.itemAmount > 1) desc += " x" + blueprint.itemAmount;
            craftObj.transform.GetChild(0).GetComponent<Text>().text = desc;
 
            blueprint.desc = desc;
            craftObj.transform.GetChild(1).GetComponent<Image>().sprite = item.Sprite;
            craftObj.GetComponent<CraftButton>().itemID = item.ID;

            craftObj.GetComponent<Button>().onClick.AddListener(delegate { craft.OpenTooltip(blueprint); });
        }
    }
}

public void UpdatePanel(CraftPanel.workstations workStation)
{
    bool mainActive = false;

    foreach (Transform child in transform)
    {
        for (int i = 0; i < craftDatabase.craftDatabase.Count; i++)
        {                
            Blueprint blueprint = craftDatabase.craftDatabase[i];
            string ID = child.GetComponent<CraftButton>().itemID;

            if (blueprint.itemId == ID)
            {
                bool active = true;
                string color = "<color=#ffffff>";

                if ((blueprint.workStation & workStation) != 0)
                {
                    for (int j = 0; j < blueprint.requiredItems.Count; j++)
                    {
                        if (!Global.inventoryControl.CheckItemsInInventory(blueprint.requiredItems[j].itemId, blueprint.requiredItems[j].itemAmount))
                        {
                            color = "<color=#828282>";
                            break;
                        }
                    }
                }
                else
                    active = false;

                child.transform.GetChild(0).GetComponent<Text>().text = color + blueprint.desc + "</color>";

                GameObject obj = child.gameObject;

                if (obj.activeSelf && !active)
                    craftPanel.transform.GetChild(0).GetComponent<ScrollRect>().verticalScrollbar.value = 1;

                obj.SetActive(active);

                if (active)                                           
                    mainActive = true;
                
                break;
            }
        }
    }
    categoryBut.gameObject.SetActive(mainActive);
}

void OpenCategory(GameObject panel)
{
    GridLayoutGroup grid = panel.GetComponent<GridLayoutGroup>();
    grid.enabled = !grid.enabled;

    if(grid.enabled)
        categoryBut.transform.GetChild(1).GetComponent<Text>().text = "-";
    else
        categoryBut.transform.GetChild(1).GetComponent<Text>().text = "+";
}
}

When i try to throw in craftDatabase.craftDatabase.Sort(); it gives me the error: ArgumentException: does not implement right interface

if anymore info is needed please let me know.

Using List.Sort in Unity

I am trying to create a crafting panel that sorts the list of items you can make alphabetically, yet I cannot figure out why .Sort() is not working. What I have is a game object that holds a list of all the items you can make and the requirements, then in my crafting script I access the game object for the list and display the info. Everything works fine until I try to sort anything. craftDatabase is what I need to be sorted. Also, it needs to be sorted by ItemID.

 
using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class CraftDatabase : MonoBehaviour 
{
    public List<Blueprint> craftDatabase = new List<Blueprint>();
}

[System.Serializable]
public class Blueprint
{
    public string itemId;
    public int itemAmount;
    public float itemCraftTime = 1f;
    public CraftPanel.subsections subsection;
    public CraftPanel.workstations workStation;
    public List<requiredItem> requiredItems = new List<requiredItem>();

    [HideInInspector]        
    public string desc;

    [System.Serializable]
    public struct requiredItem
    {
        public string itemId;
        public int itemAmount;
    }
    
    public Blueprint()
    {
    }
}

An example of a Blueprint list.

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;

public class CategoryPanel : MonoBehaviour 
{
    public CraftPanel.subsections subsection;    
    public GameObject craftButton;  
  
    [HideInInspector]
    public Button categoryBut;

    private GameObject craftPanel;
    private CraftPanel craft;

    private Blueprint activeBlueprint;
    private InputField inputAmount;

    private CraftDatabase craftDatabase;
    private ItemDatabase database;

    public void Init()
    {
        craftDatabase = GameObject.Find("Database").GetComponent<CraftDatabase>();
        database = GameObject.Find("Database").GetComponent<ItemDatabase>();

        craftPanel = GameObject.Find("Craft Panel").gameObject;
        craft = craftPanel.GetComponent<CraftPanel>();

        categoryBut.onClick.AddListener(delegate { OpenCategory(gameObject); });

        for (int i = 0; i < craftDatabase.craftDatabase.Count; i++)
        {
            Blueprint blueprint = craftDatabase.craftDatabase[i];

            if (blueprint.subsection == subsection)
            {
                Item item = database.FetchItemByID(blueprint.itemId);
                GameObject craftObj = Instantiate(craftButton);

                craftObj.transform.SetParent(transform, false);

                string desc = item.Title; 

                if (blueprint.itemAmount > 1) 
                    desc += " x" + blueprint.itemAmount;
            
                craftObj.transform.GetChild(0).GetComponent<Text>().text = desc;
                blueprint.desc = desc;
                craftObj.transform.GetChild(1).GetComponent<Image>().sprite 
                    = item.Sprite;
                craftObj.GetComponent<CraftButton>().itemID = item.ID;

                craftObj.GetComponent<Button>().onClick
                    .AddListener(delegate { craft.OpenTooltip(blueprint); });
            }
        }
    }

    public void UpdatePanel(CraftPanel.workstations workStation)
    {
        bool mainActive = false;

        foreach (Transform child in transform)
        {
            for (int i = 0; i < craftDatabase.craftDatabase.Count; i++)
            {                
                Blueprint blueprint = craftDatabase.craftDatabase[i];
                string ID = child.GetComponent<CraftButton>().itemID;

                if (blueprint.itemId == ID)
                {
                    bool active = true;
                    string color = "<color=#ffffff>";

                    if ((blueprint.workStation & workStation) != 0)
                    {
                        for (int j = 0; j < blueprint.requiredItems.Count; j++)
                        {
                            if (!Global.inventoryControl
                                .CheckItemsInInventoryblueprint.requiredItems[j]
                                .itemId, blueprint.requiredItems[j].itemAmount))
                            {
                                color = "<color=#828282>";
                                break;
                            }
                        }
                    }
                    else
                        active = false;

                    child.transform.GetChild(0).GetComponent<Text>().text 
                        = color + blueprint.desc + "</color>";

                    GameObject obj = child.gameObject;

                    if (obj.activeSelf && !active)
                        craftPanel.transform.GetChild(0).GetComponent<ScrollRect>()
                            .verticalScrollbar.value = 1;

                    obj.SetActive(active);

                    if (active)                                           
                        mainActive = true;
                
                    break;
                }
            }
        } 

        categoryBut.gameObject.SetActive(mainActive);
    }

    void OpenCategory(GameObject panel)
    {
        GridLayoutGroup grid = panel.GetComponent<GridLayoutGroup>();
        grid.enabled = !grid.enabled;

        if(grid.enabled)
            categoryBut.transform.GetChild(1).GetComponent<Text>().text = "-";
        else
            categoryBut.transform.GetChild(1).GetComponent<Text>().text = "+";
    }
}
 

When I try to throw in craftDatabase.craftDatabase.Sort(); it gives me this error:

ArgumentException: does not implement right interface

How do I fix this error to use Sort()?

deleted 2 characters in body
Source Link
Loading
added 747 characters in body
Source Link
Loading
Source Link
Loading