Итак, ваша проблема в том, что Update
больше не вызывается, если GameObject
, к которому прикреплен ваш скрипт, неактивен после
gameObject.SetActive(false);
(не уверен на 100% и не может проверить прямо сейчас это как печатать на смартфоне.)
Afaik Invoke
все еще работает также на отключенном MonoBehaviour
или неактивном GameObject
(по крайней мере, я знаю, что это так для InvokeRepeating
), так что вы, вероятно, можете просто использовать что-то вроде
public class randomGopher : MonoBehaviour
{
// Adjust these in seconds
[SerializeField] private float minDelay = 1f;
[SerializeField] private float maxDelay = 3f;
private void Start()
{
Invoke(nameof(SwitchActiveState), Random.Range(minDelay, maxDelay);
}
private void SwitchActiveState ()
{
gameObject.SetActive(! gameObject.activeSelf);
Invoke(nameof(SwitchActiveState), Random.Range(minDelay, maxDelay);
}
}