public EvidencePiece CheckConnection(EvidencePiece evidence1, EvidencePiece evidence2)
    {
        foreach (var connection in connections)
        {
            if (connection.components.Contains(evidence1) && connection.components.Contains(evidence2))
            {
                DisplayEvidencePiece(connection.evidencePiece);

                return(connection.evidencePiece);
            }
        }

        return(null);
    }
    public void DisplayEvidencePiece(EvidencePiece evidencePiece)
    {
        GameObject newEvidenceText = Instantiate(
            evidencePieceText,
            textPadding + Vector2.down * (evidencePieceTexts.Count * verticalTextOffset),
            Quaternion.identity
            );

        newEvidenceText.transform.SetParent(gridLayout.transform, false);

        evidencePieceTexts.Add(evidencePiece, newEvidenceText);

        newEvidenceText.GetComponent <Text>().text = evidencePiece.description;

        newEvidenceText.GetComponent <Button>().onClick.AddListener(() => SelectEvidence(evidencePiece));
    }
    public void SelectEvidence(EvidencePiece evidencePiece)
    {
        if (selectedEvidencePiece == evidencePiece)
        {
            return;
        }

        evidencePieceTexts[evidencePiece].GetComponent <Text>().color = selectedColor;

        if (selectedEvidencePiece == null)
        {
            selectedEvidencePiece = evidencePiece;
        }
        else
        {
            var newEvidencePiece = CheckConnection(evidencePiece, selectedEvidencePiece);

            if (newEvidencePiece != null)
            {
                evidencePieceTexts[evidencePiece].GetComponent <Text>().color         = matchColor;
                evidencePieceTexts[selectedEvidencePiece].GetComponent <Text>().color = matchColor;
                evidencePieceTexts[newEvidencePiece].GetComponent <Text>().color      = matchColor;

                evidencePieceTexts[evidencePiece].GetComponent <Text>().DOColor(defaultColor, colorFadeTime);
                evidencePieceTexts[selectedEvidencePiece].GetComponent <Text>().DOColor(defaultColor, colorFadeTime);
                evidencePieceTexts[newEvidencePiece].GetComponent <Text>().DOColor(defaultColor, colorFadeTime);
            }
            else
            {
                evidencePieceTexts[evidencePiece].GetComponent <Text>().color         = noMatchColor;
                evidencePieceTexts[selectedEvidencePiece].GetComponent <Text>().color = noMatchColor;

                evidencePieceTexts[evidencePiece].GetComponent <Text>().DOColor(defaultColor, colorFadeTime);
                evidencePieceTexts[selectedEvidencePiece].GetComponent <Text>().DOColor(defaultColor, colorFadeTime);
            }

            selectedEvidencePiece = null;
        }
    }