Как я могу использовать bool в двух скриптах, чтобы решить, вызывать функцию или нет? - PullRequest
1 голос
/ 02 февраля 2020

В первом скрипте в FixedUpdate () я вызываю эту функцию:

private void FixedUpdate()
        {
            RotateView();
        }

Внутри RotateView:

public void RotateView()
        {
            gameObject.GetComponent<FPEMouseLook>().LookRotation(transform, m_Camera.transform);
        }

А во втором скрипте я вызываю RotateView выглядит так:

Whilefun.FPEKit.FPEPlayer.Instance.GetComponent<Whilefun.FPEKit.FPEFirstPersonController>().RotateView();

Но теперь я хочу добавить bool в скрипт с помощью функции RotateView, чтобы я мог решить во втором скрипте, вызывать или нет RotateView в FixedUpdate.

Я хочу контролировать, будет ли RotateView вызываться или нет в FixedUpdate из второго скрипта, или лучше контролировать, будет ли выполняться строка:

gameObject.GetComponent<FPEMouseLook>().LookRotation(transform, m_Camera.transform);

или нет, в зависимости от того, какой флаг я установил во втором сценарии, например:

Whilefun.FPEKit.FPEPlayer.Instance.GetComponent<Whilefun.FPEKit.FPEFirstPersonController>().RotateView(false);

false, поэтому он не будет использовать строку:

gameObject.GetComponent<FPEMouseLook>().LookRotation(transform, m_Camera.transform);

И true будет использовать ее. Или false / true, если вызывать RotateView изнутри FixedUpdate в первом сценарии.

1 Ответ

2 голосов
/ 02 февраля 2020

Есть много способов сделать это:

  • Вы можете назначить один скрипт другому через инспектора, используя [SerializeField] OtherScript foo;
  • Вы можете иметь bool be publi c и static, затем он становится доступным через OtherScript.foo
  • . Вы можете использовать один из множества способов получить другой компонент в Start() одного из сценариев, например, FindObjectByType() или * 1013. * или GetComponentInChildren<...>(), тогда bool может быть опубликован c или опубликован c, но с использованием {get; приватный набор; } accessor, или сделанный доступным через функцию c publi, такую ​​как GetFoo()
  • Для очень редких проверок bool, например, для настроек начальной загрузки, в Unity есть также класс PlayerPrefs (но обычно затем поместите его в другую переменную)
  • Вы даже можете обнаружить, что вы ошиблись в подходе совместного использования bool, и вместо этого вы хотите, чтобы один класс обрабатывал вызов RotateView другого et c.

Все зависит от того, как вы структурируете свою программу, что должны делать классы, какова их область действия и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...