Unity3d - вызов публичной производительности статических переменных - PullRequest
0 голосов
/ 26 августа 2018

Я хочу знать, если я вызываю открытую статическую переменную из другого скрипта в функции Update или FixedUpdate, это влияет на производительность?

что-то вроде:

[RequireComponent(typeof(Rigidbody))]

public class CC : MonoBehaviour
{
    //Components
    public static Rigidbody rigidbodys;

    void Awake()
    {
        rigidbodys = GetComponent<Rigidbody>();
        rigidbodys.freezeRotation = true;
        rigidbodys.useGravity = false;
        rigidbodys.isKinematic = true;
    }
}

И в другомскрипт:

void FixedUpdate()
{
      if(CC.rigidbodys.velocity > 1)
          {
            DoSomething();
          }
}

Если я буду использовать этот способ, снизит производительность или нет?

Ответы [ 2 ]

0 голосов
/ 26 августа 2018

Это выглядит очень хорошо. В вашем Фиксированном обновлении вы получаете доступ только к рибибоди (который устанавливается один раз в активном состоянии), и это дешево. Вы также можете сделать обычный публичный Rigidbody rigbdy и передать настроенный игровой объект в инспекторе. Затем вы можете передать контент своему статическому Rigidbody. Итак, вы очистите Awake.

    void Awake()
    {
        rigidbodys = ridbdy;
    }

Со стороны исполнения (> значит лучше): static> Singleton Pattern> GetComponent / FindObject

0 голосов
/ 26 августа 2018

Пока вы сохраняете getComponent () вне update (), это будет быстрее, чем, например, вычисление скорости в другом скрипте.

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