На самом деле у вас есть два отдельных экземпляра LockSystem
, а с каждым из них отдельный экземпляр LockSystemScript
.Вы допустили ошибку в следующей строке:
if (Physics.Raycast(ray, out hit, 100) && hit.transform.gameObject.tag.Equals("Button") && _taps <= 3)
Здесь вы проверяете, попадает ли Raycast()
в объект и является ли этот объект Button
.Проблема в том, что Update()
вызывается на каждом MonoBehaviour
в вашей сцене, поэтому он вызывается для обоих экземпляров LockSystemScript
, и независимо от того, на что LockSystem
вы смотрите, вы смотрите на Button
и вышеприведенное утверждение: true
.
Что вы должны сделать, это следующее:
if (Physics.Raycast(ray, out hit, 100) && hit.transform.gameObject.tag.Equals("Button") && _taps <= 3 && hit.transform.isChildOf(this.transform))
Таким образом, вы проверяете, действительно ли Button
, на который вы смотрите, действительно принадлежитк сценарию, в котором Update()
запускается прямо сейчас.