Суббота, 27 Апреля 2024, 07:02

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 2 из 2
  • «
  • 1
  • 2
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Как в новом объекте воспроизвести метод из другого объекта ?
Как в новом объекте воспроизвести метод из другого объекта ?
seamanДата: Пятница, 27 Октября 2017, 19:51 | Сообщение # 21
старожил
Сейчас нет на сайте
Цитата
нет ничего плохо в том, чтобы писать качественнее и лучше

Кто бы спорил!
Только писать if(true == true) не значит писать качественней. Более того совершенно нельзя использовать рекомендации C в C#. Почему? Потому что в C нет настоящего булевого типа. Там True это целое значение не равное 0, False - целое значение равное 0. Поэтому там можно "выстрелить себе в ногу" например так:
Код
int i = 0;
if (i = 1)
  printf("i == 1");
else
  printf("i == 0");

Тут в if перепутан == и = При этом ошибки никакой нет. Оператор присваивания i = 1 возвращает эту самую 1. А 1 трактуется как True. Следовательно выводиться будет всегда "i == 1". Это не то что хотел программист.
Чтобы избежать подобных ошибок и сделали рекомендацию - сравнивать с True, даже если переменная bool.
Ну а теперь перенесите это на шарп.
Да Вам сразу компилятор взвоет на if (i = 1) и не даст "выстрелить себе в ногу".
Ну и нафига рекомендации языка C использовать в C# в таком случае?

Добавлено (27 октября 2017, 19:51)
---------------------------------------------
Ну а в Unity вообще свои заморочки. Например для GameObject и MonoBehaviour переопределен оператор ==. Причины можете посмотреть тут: https://blogs.unity3d.com/ru/2014/05/16/custom-operator-should-we-keep-it/
Поэтому такой тип кеширования:

Код
private Transform m_CachedTransform
public Transform transform
{
  get
  {
    if (m_CachedTransform == null)
      m_CachedTransform = InternalGetTransform();
    return m_CachedTransform;
  }
}

(Вместо трансформ можно взять любой компонент) может даже и замедлить работу. Именно из-за == null.

Вывод - нельзя рекомендации одного языка тупо переносить на другие. Нельзя рекомендации одной среды тупо переносить на другие.
Ну а в C# использование if(flag == true) считается моветоном.
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Как в новом объекте воспроизвести метод из другого объекта ?
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг