Страница 5 из 5

Re: Насколько стоит оптимизировать?

СообщениеДобавлено: 26 май 2021, 12:43
vitalik77
Все, понял, спасибо. А то я думал что можна закешировать на подкомпонент ссылку.

Re: Насколько стоит оптимизировать?

СообщениеДобавлено: 26 май 2021, 13:12
TeslaGan
vitalik77 писал(а):Все, понял, спасибо. А то я думал что можна закешировать на подкомпонент ссылку.

в новых версиях шарпа можно... вопрос, как тут дела обстоят с юнити...
Синтаксис:
Используется csharp
public ref bool IsKinematic;

private void Start()
{
   IsKinematic = ref GetComponent<Rigibody>().isKinematic;
}
private void Update()
{
   if( Input.GetKeyDown( KeyCode.Space ) )
      IsKinematic = false;
   if( Input.GetKeyUp( KeyCode.Space ) )
      IsKinematic = true;
}
 

но повторюсь, это штука относительно новая, и надо смотреть, какую сейчас версию шарпа поддерживает юнити

Re: Насколько стоит оптимизировать?

СообщениеДобавлено: 26 май 2021, 13:17
vitalik77
Да нет, 21й юнити и visual studio полгодичной давности, ни одна такая ссылка не работала. Или ref это какае то новая фишка?

Re: Насколько стоит оптимизировать?

СообщениеДобавлено: 26 май 2021, 13:33
TeslaGan
vitalik77 писал(а):Да нет, 21й юнити и visual studio полгодичной давности, ни одна такая ссылка не работала. Или ref это какае то новая фишка?

ref это старая фишка. но юнити до сих пор сидит на древних версиях ядра... и многих плюшек современного шарпа юниводам не доступны(только что проверил, ref для полей в юнити не доступен =/)

Re: Насколько стоит оптимизировать?

СообщениеДобавлено: 26 май 2021, 19:42
Woolf
TeslaGan писал(а):
vitalik77 писал(а):Да нет, 21й юнити и visual studio полгодичной давности, ни одна такая ссылка не работала. Или ref это какае то новая фишка?

ref это старая фишка. но юнити до сих пор сидит на древних версиях ядра... и многих плюшек современного шарпа юниводам не доступны(только что проверил, ref для полей в юнити не доступен =/)


это, наверное, потому, что юнити не на шарпе, а на моно?

Re: Насколько стоит оптимизировать?

СообщениеДобавлено: 26 май 2021, 20:06
TeslaGan
Woolf писал(а):это, наверное, потому, что юнити не на шарпе, а на моно?

плюсы жеж?! но это не важно на чем работает компилятор. важно что они помимо шарпа пытаются поддерживать скрипты

Re: Насколько стоит оптимизировать?

СообщениеДобавлено: 26 май 2021, 22:07
vitalik77
Хорошо, я вот тут подумал, rigidbody определенный тип, а как мне например закешировать вот такую ссылку , на скрипт?
Синтаксис:
Используется csharp
gameObject.GetComponent<SimpleCarController>().maxMotorTorque = 0.0f;

SimpleCarController это другой скрипт

Re: Насколько стоит оптимизировать?

СообщениеДобавлено: 26 май 2021, 22:15
Alkos26Rus
vitalik77 писал(а):Хорошо, я вот тут подумал, rigidbody определенный тип, а как мне например закешировать вот такую ссылку , на скрипт?
Синтаксис:
Используется csharp
gameObject.GetComponent<SimpleCarController>().maxMotorTorque = 0.0f;

По той же аналогии

Синтаксис:
Используется csharp
public SimpleCarController сar_сontroller;

void Start(){
сar_сontroller = GetComponent<SimpleCarController >();
}

void Update(){
сar_сontroller.maxMotorTorque = 0.0f;
}
 


gameObject не нужно писать перед GetComponent

Re: Насколько стоит оптимизировать?

СообщениеДобавлено: 26 май 2021, 22:21
vitalik77
Спасибо, но как это я не понимаю, какой это тип или клас или что это?
public SimpleCarController сar_сontroller;
или оно автоматически определит что это скрипт? Или вообще все равно?

Re: Насколько стоит оптимизировать?

СообщениеДобавлено: 26 май 2021, 23:22
TeslaGan
vitalik77 писал(а):Спасибо, но как это я не понимаю, какой это тип или клас или что это?
public SimpleCarController сar_сontroller;
или оно автоматически определит что это скрипт? Или вообще все равно?

вообще GetComponent возвращает объект типа Component... но с ними зачастую работать не удобно... потому мы используем приведение типов...
самое эффективное приведение - использовать обобщения. <> - такие скобки. внутри них написан тип переменной которую мы используем.... значит и GetComponent<SimpleCarController>() вернет объект типа SimpleCarController...
но все что я выше написал, справедливо только для функций, поддерживающих обобщения...