How can I access material of a mesh renderer without receiving and instance of it?

I am trying to use the following code to determine whether or not there exists squares on my grid, vertically or horizontally, with the same colour as the current block i rest on.

for (int i = 0; i < GridBlocks.Count; i++) { if (GridBlocks*.transform.position.z == CurrentGridBlock.transform.position.z &&* _GridBlocks*.GetComponent<MeshRenderer>().material == CurrentGridBlock.GetComponent<MeshRenderer>().material &&*_ <em>_CurrentGridBlock != GridBlocks*)*_</em> <em>_*{*_</em> <em><em>_HorizontalSameColouredBlocks.Add(GridBlocks*);*_</em></em> <em><em>_*}*_</em></em> <em><em><em>_else if (GridBlocks*.transform.position.x == CurrentGridBlock.transform.position.x &&*_</em></em></em> <em><em><em><em>_GridBlocks*.GetComponent<MeshRenderer>().material == CurrentGridBlock.GetComponent<MeshRenderer>().material &&*_</em></em></em></em> <em><em><em><em><em>_CurrentGridBlock != GridBlocks*)*_</em></em></em></em></em> <em><em><em><em><em>_*{*_</em></em></em></em></em> <em><em><em><em><em><em>_VerticalSameColouredBlocks.Add(GridBlocks*);*_</em></em></em></em></em></em> <em><em><em><em><em><em>_*}*_</em></em></em></em></em></em> <em><em><em><em><em><em>_*if (HorizontalSameColouredBlocks.Count == Mathf.Sqrt(GridBlocks.Count) - 2 && VerticalSameColouredBlocks.Count == Mathf.Sqrt(GridBlocks.Count) - 2)*_</em></em></em></em></em></em> <em><em><em><em><em><em>_*{*_</em></em></em></em></em></em> <em><em><em><em><em><em>_*break;*_</em></em></em></em></em></em> <em><em><em><em><em><em>_*}*_</em></em></em></em></em></em> <em><em><em><em><em><em>_*}*
However, the following line never returns true in either vertical or horizontal._

GridBlocks*.GetComponent<MeshRenderer>().material == CurrentGridBlock.GetComponent<MeshRenderer>().material*

This is because they both return separate instances of that same material. How can get this to ignore the different instances? I have tried just checking if the names are equivalent, this does not work either.
EDIT: Using sharedMaterial

I used .sharedMaterial to see if the outputs were equivalent of want i was testing. This is the output: [155564-untitled.png|155564]
As you can see, the original set Gray blocks are reading without any instance, the current block that the player is standing on, reads a single instance, and any other colour in a row/column will read a doubled instance.
I changed this following line:
GridBlocks*.GetComponent<MeshRenderer>().material == CurrentGridBlock.GetComponent<MeshRenderer>().material_

To this:
GridBlocks*.GetComponent<MeshRenderer>().sharedMaterial == CurrentGridBlock.GetComponent<MeshRenderer>().sharedMaterial*

Please help
:confused:
Edit 2: Displaying my entire code that has to be related to this problem

`using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CubeMovement : MonoBehaviour
{
private List Pivots, GridBlocks, AvailableGridBlocks, HorizontalSameColouredBlocks, VerticalSameColouredBlocks, GridBlocksToReset;
private GameObject Player, ChosenPivot, CurrentGridBlock;
private Vector3 TouchPos, PlayerRotation;
private MeshRenderer GridBlockMeshRenderer;
private PlayerColourRandomizer ColourRandomizerScript;
private float DistanceFromCurrentBlock;
void Awake()
{
Pivots = new List();
GridBlocks = new List();
AvailableGridBlocks = new List();
HorizontalSameColouredBlocks = new List();
VerticalSameColouredBlocks = new List();
GridBlocksToReset = new List();
Pivots.AddRange(GameObject.FindGameObjectsWithTag(“PivotPoint”));
GridBlocks.AddRange(GameObject.FindGameObjectsWithTag(“GridBlock”));
Player = this.gameObject;
ColourRandomizerScript = this.gameObject.GetComponent();
}
void Update()
{
if (Input.touchCount > 0)
{
Touch touch = Input.GetTouch(0);
Ray ray = Camera.main.ScreenPointToRay(touch.position);
Plane plane = new Plane(Vector3.up, transform.position);
float distance = 0;

if (touch.phase == TouchPhase.Moved)
{
if (plane.Raycast(ray, out distance))
{
TouchPos = ray.GetPoint(distance);
}
}
if (touch.phase == TouchPhase.Ended)
{
CheckSelectedGridBlock();
Roll();
}
if (touch.phase == TouchPhase.Canceled)
{
ResetValues();
}
}
}
public void SetInitialPlayerPosition()
{
int RandomStartingPosition = Random.Range(0, GridBlocks.Count);
Player.transform.position = new Vector3(GridBlocks[RandomStartingPosition].transform.position.x, 0.5f, GridBlocks[RandomStartingPosition].transform.position.z);
}
public void SetInitialGridBlockColour()
{
for(int i = 0; i < GridBlocks.Count; i++)
{
if(GridBlocks_.transform.position.x == Player.transform.position.x && GridBlocks*.transform.position.z == Player.transform.position.z)
{_

_GridBlocks.GetComponent().material = Player.GetComponent().material;
break;
}
}
}
public void SetBlackSquares()
{
int BlackSquaresInGame = Random.Range(2, 5);
for (int i = 0; i < BlackSquaresInGame; i++)
{
int GridBlockPlacement = Random.Range(0, GridBlocks.Count);
while (GridBlocks[GridBlockPlacement].transform.position.x == Player.transform.position.x && GridBlocks[GridBlockPlacement].transform.position.z == Player.transform.position.z ||
GridBlocks[GridBlockPlacement].transform.position.x == Player.transform.position.x - 1f && GridBlocks[GridBlockPlacement].transform.position.z == Player.transform.position.z ||
GridBlocks[GridBlockPlacement].transform.position.x == Player.transform.position.x + 1f && GridBlocks[GridBlockPlacement].transform.position.z == Player.transform.position.z ||
GridBlocks[GridBlockPlacement].transform.position.x == Player.transform.position.x && GridBlocks[GridBlockPlacement].transform.position.z == Player.transform.position.z - 1f ||
GridBlocks[GridBlockPlacement].transform.position.x == Player.transform.position.x && GridBlocks[GridBlockPlacement].transform.position.z == Player.transform.position.z + 1f)
{
GridBlockPlacement = Random.Range(0, GridBlocks.Count);
}
GridBlocks[GridBlockPlacement].GetComponent().material = Resources.Load(“Materials/BlackSquare”);
}
}
public void SetupPivots()
{
for(int i = 0; i < Pivots.Count; i++)
{_

_if (Pivots.name.Contains(“Up”))
{_

_Pivots.transform.position = new Vector3(Player.transform.position.x, Player.transform.position.y - 0.5f, Player.transform.position.z + 0.5f);
}_

_else if(Pivots.name.Contains(“Down”))
{_

_Pivots.transform.position = new Vector3(Player.transform.position.x, Player.transform.position.y - 0.5f, Player.transform.position.z - 0.5f);
}_

_else if(Pivots.name.Contains(“Left”))
{_

_Pivots.transform.position = new Vector3(Player.transform.position.x - 0.5f, Player.transform.position.y - 0.5f, Player.transform.position.z);
}_

_else if (Pivots.name.Contains(“Right”))
{_

_Pivots.transform.position = new Vector3(Player.transform.position.x + 0.5f, Player.transform.position.y - 0.5f, Player.transform.position.z);
}
}
}
public void CheckAavailableMovements()
{
if (AvailableGridBlocks.Count > 0)
{
for(int i = 0; i < AvailableGridBlocks.Count; i++)
{_

_GridBlockMeshRenderer = AvailableGridBlocks.GetComponent();
if (GridBlockMeshRenderer.material.name.Contains(“GrayAvailable”))
{
GridBlockMeshRenderer.material = Resources.Load(“Materials/GraySquare”);
}
else if (GridBlockMeshRenderer.material.name.Contains(“BlackAvailable”))
{
GridBlockMeshRenderer.material = Resources.Load(“Materials/BlackSquare”);
}
}
AvailableGridBlocks.Clear();
}*_

for (int i = 0; i < GridBlocks.Count; i++)
{
GridBlockMeshRenderer = GridBlocks*.GetComponent();*
if (Player.transform.position.x == GridBlocks_.transform.position.x - 1 && Player.transform.position.z == GridBlocks*.transform.position.z ||
Player.transform.position.x == GridBlocks.transform.position.x + 1 && Player.transform.position.z == GridBlocks.transform.position.z ||
Player.transform.position.x == GridBlocks.transform.position.x && Player.transform.position.z == GridBlocks.transform.position.z - 1 ||
Player.transform.position.x == GridBlocks.transform.position.x && Player.transform.position.z == GridBlocks.transform.position.z + 1)
{
if (GridBlockMeshRenderer.material.name.Contains(“Gray”))
{_

_AvailableGridBlocks.Add(GridBlocks);
GridBlockMeshRenderer.material = Resources.Load(“Materials/GrayAvailableSquare”);
}
else if (GridBlockMeshRenderer.material.name.Contains(“Black”))
{_

_AvailableGridBlocks.Add(GridBlocks);
GridBlockMeshRenderer.material = Resources.Load(“Materials/BlackAvailableSquare”);
}
}
if (AvailableGridBlocks.Count == 4)
{
break;
}
}
}
private void CheckSelectedGridBlock()
{
for (int i = 0; i < AvailableGridBlocks.Count; i++)
{
if (TouchPos.x > AvailableGridBlocks.transform.position.x - 0.5f && TouchPos.x < AvailableGridBlocks.transform.position.x + 0.5f &&
TouchPos.z > AvailableGridBlocks.transform.position.z - 0.5f && TouchPos.z < AvailableGridBlocks.transform.position.z + 0.5f)
{_

_CurrentGridBlock = AvailableGridBlocks;
for(int j = 0; j < Pivots.Count; j++)
{
if (CurrentGridBlock.transform.position.x < Player.transform.position.x &&
CurrentGridBlock.transform.position.z == Player.transform.position.z &&
Pivots[j].transform.position.x < Player.transform.position.x)
{
ChosenPivot = Pivots[j];
break;
}
else if (CurrentGridBlock.transform.position.x > Player.transform.position.x &&
CurrentGridBlock.transform.position.z == Player.transform.position.z &&
Pivots[j].transform.position.x > Player.transform.position.x)
{
ChosenPivot = Pivots[j];
break;
}
else if (CurrentGridBlock.transform.position.z < Player.transform.position.z &&
CurrentGridBlock.transform.position.x == Player.transform.position.x &&
Pivots[j].transform.position.z < Player.transform.position.z)
{
ChosenPivot = Pivots[j];
break;
}
else if (CurrentGridBlock.transform.position.z > Player.transform.position.z &&
CurrentGridBlock.transform.position.x == Player.transform.position.x &&
Pivots[j].transform.position.z > Player.transform.position.z)
{
ChosenPivot = Pivots[j];
break;
}
}
break;
}
else if (i == AvailableGridBlocks.Count - 1)
{
CurrentGridBlock = null;
}
}
}
private void Roll()
{
StartCoroutine(Move());
}
private void ChangeCurrentGridBlockColour()
{
if (!CurrentGridBlock.GetComponent().material.name.Contains(“Black”))
{
CurrentGridBlock.GetComponent().material = Player.GetComponent().material;
}
else if (CurrentGridBlock.GetComponent().material.name.Contains(“Black”))
{
}
}
private void ClearLinedBlocks()
{
if (CurrentGridBlock != null)
{
for (int i = 0; i < GridBlocks.Count; i++) {_

_if (GridBlocks.transform.position.z == CurrentGridBlock.transform.position.z) {_
_Debug.Log("VERTICAL – GridBlock: " + GridBlocks.GetComponent().sharedMaterial);
Debug.Log("Current: " + CurrentGridBlock.GetComponent().sharedMaterial);_

_Debug.Log(GridBlocks.GetComponent().sharedMaterial == CurrentGridBlock.GetComponent().sharedMaterial);
}_

_if (GridBlocks.transform.position.x == CurrentGridBlock.transform.position.x)
{_

_Debug.Log("HORIZONTAL – GridBlock: " + GridBlocks.GetComponent().sharedMaterial);
Debug.Log("Current: " + CurrentGridBlock.GetComponent().sharedMaterial);_

_Debug.Log(GridBlocks.GetComponent().sharedMaterial == CurrentGridBlock.GetComponent().sharedMaterial);
}_

_if (GridBlocks.transform.position.z == CurrentGridBlock.transform.position.z &&_
_GridBlocks.GetComponent().sharedMaterial == CurrentGridBlock.GetComponent().sharedMaterial &&_
_CurrentGridBlock != GridBlocks)
{_

_HorizontalSameColouredBlocks.Add(GridBlocks);
}_

_else if (GridBlocks.transform.position.x == CurrentGridBlock.transform.position.x &&_
_GridBlocks.GetComponent().sharedMaterial == CurrentGridBlock.GetComponent().sharedMaterial &&_
_CurrentGridBlock != GridBlocks)
{_

_VerticalSameColouredBlocks.Add(GridBlocks);
}
if (HorizontalSameColouredBlocks.Count == Mathf.Sqrt(GridBlocks.Count) - 2 && VerticalSameColouredBlocks.Count == Mathf.Sqrt(GridBlocks.Count) - 2)
{
break;
}
}
if (HorizontalSameColouredBlocks.Count >= 2)
{
DistanceFromCurrentBlock = 1;
GridBlocksToReset.Add(CurrentGridBlock);
for (int i = 0; i < HorizontalSameColouredBlocks.Count; i++)
{_

_if (CurrentGridBlock.transform.position.x - HorizontalSameColouredBlocks.transform.position.x == DistanceFromCurrentBlock)
{_

_GridBlocksToReset.Add(HorizontalSameColouredBlocks);
HorizontalSameColouredBlocks.RemoveAt(i);
DistanceFromCurrentBlock++;
i = 0;
}
else if (i == HorizontalSameColouredBlocks.Count - 1 && DistanceFromCurrentBlock > 0)
{
DistanceFromCurrentBlock = -1;
for (int j = 0; j < HorizontalSameColouredBlocks.Count; j++)
{_

_if (CurrentGridBlock.transform.position.x - HorizontalSameColouredBlocks.transform.position.x == DistanceFromCurrentBlock)
{_

_GridBlocksToReset.Add(HorizontalSameColouredBlocks);
DistanceFromCurrentBlock–;
j = 0;
}
}
}
}
if (GridBlocksToReset.Count >= 3)
{
foreach (GameObject x in GridBlocksToReset)
{
x.GetComponent().material = Resources.Load(“Materials/GraySquare”);
}
}
GridBlocksToReset.Clear();
}
if (VerticalSameColouredBlocks.Count >= 2)
{
DistanceFromCurrentBlock = 1;
GridBlocksToReset.Add(CurrentGridBlock);
for (int i = 0; i < VerticalSameColouredBlocks.Count; i++)
{_

_if (CurrentGridBlock.transform.position.x - VerticalSameColouredBlocks.transform.position.x == DistanceFromCurrentBlock)
{_

_GridBlocksToReset.Add(VerticalSameColouredBlocks);
VerticalSameColouredBlocks.RemoveAt(i);
DistanceFromCurrentBlock++;
i = 0;
}
else if (i == VerticalSameColouredBlocks.Count - 1 && DistanceFromCurrentBlock > 0)
{
DistanceFromCurrentBlock = -1;
for (int j = 0; j < VerticalSameColouredBlocks.Count; j++)
{_

_if (CurrentGridBlock.transform.position.x - VerticalSameColouredBlocks.transform.position.x == DistanceFromCurrentBlock)
{_

_GridBlocksToReset.Add(VerticalSameColouredBlocks);
DistanceFromCurrentBlock–;
j = 0;
}
}
}
}
if (GridBlocksToReset.Count >= 3)
{
foreach (GameObject x in GridBlocksToReset)
{
x.GetComponent().material = Resources.Load(“Materials/GraySquare”);
}
}
GridBlocksToReset.Clear();
}
VerticalSameColouredBlocks.Clear();
HorizontalSameColouredBlocks.Clear();
}
}
private void FixFloatingPointPrecision()
{
Player.transform.position = new Vector3(Mathf.Round(Player.transform.position.x), 0.5f, Mathf.Round(Player.transform.position.z));
PlayerRotation = transform.eulerAngles;
PlayerRotation.x = Mathf.Round(PlayerRotation.x / 90) * 90;
PlayerRotation.y = Mathf.Round(PlayerRotation.y / 90) * 90;
PlayerRotation.z = Mathf.Round(PlayerRotation.z / 90) * 90;
transform.eulerAngles = PlayerRotation;
}
private void ResetValues()
{
TouchPos = Vector3.zero;
ChosenPivot = null;
CurrentGridBlock = null;
GridBlockMeshRenderer = null;
}
IEnumerator Move()
{
if (CurrentGridBlock != null)
{
if (ChosenPivot.name.Contains(“Up”))
{
for (int i = 0; i < 10; i++)
{
Player.transform.RotateAround(ChosenPivot.transform.position, Vector3.right, 9f);
yield return new WaitForSeconds(0.01f);
}
FixFloatingPointPrecision();
ChangeCurrentGridBlockColour();
}
else if (ChosenPivot.name.Contains(“Down”))
{
for (int i = 0; i < 10; i++)
{
Player.transform.RotateAround(ChosenPivot.transform.position, Vector3.left, 9f);
yield return new WaitForSeconds(0.01f);
}
FixFloatingPointPrecision();
ChangeCurrentGridBlockColour();
}
else if (ChosenPivot.name.Contains(“Right”))
{
for (int i = 0; i < 10; i++)
{
Player.transform.RotateAround(ChosenPivot.transform.position, Vector3.back, 9f);
yield return new WaitForSeconds(0.01f);
}
FixFloatingPointPrecision();
ChangeCurrentGridBlockColour();
}
else if (ChosenPivot.name.Contains(“Left”))
{
for (int i = 0; i < 10; i++)
{
Player.transform.RotateAround(ChosenPivot.transform.position, Vector3.forward, 9f);
yield return new WaitForSeconds(0.01f);
}
FixFloatingPointPrecision();
ChangeCurrentGridBlockColour();
}
ClearLinedBlocks();
SetupPivots();
CheckAavailableMovements();
ColourRandomizerScript.RandomizeNextColour();
}
ResetValues();
}
}`
The part that this problem occurs is under the function ClearLinedBlocks(), perhaps the problem is caused elsewhere, I don’t know any help would be appreciated, even if I can be suggested a new way to get the right output!

Use .sharedMaterial instead of .material. This will return the original material instead of the instance.

Hope this helps!