script only working on first run

so I have a bunch of slots in an array (for an inventory system) when I scroll onto the slot it should go bigger and set the bool selected to true but the 4th element only works on the first run. It goes bigger but does not set “selected” to true. I have tried cloning one of the working slots but it still only works on the first run. here’s the script
Note: the thing that sets it to true is in a loop in a different script
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Slot : MonoBehaviour {

	public bool selected = false;


	void Update () {

		if (selected) {
			//when selected
			transform.localScale = new Vector3 (2, 2, 2);
			selected = false;
		} else {
			//when not selected
			transform.localScale = new Vector3 (1, 1, 1);
		}
	}
}

it sets “selected” to false so when I move off of the object its is no longer selected

The problem is probably in your other script(if you only have a problem with element number 4 check if it has all the required scripts attached and values set). Post your other script here.

Note: You should use events to execute the code when selected==true. Using it in update is inefficient cause it checks every frame and sets the objects scale every frame! With events it only happens once(when it gets selected) instead of thousands of times.