Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Unity Script.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
58 Кб
Скачать
☆

2.Использование функций Awake или Start для инициализации.

Все что Вы помещаете вне любой функции в Javascript, Вам нужно поместить внутрь функций Awake или Start в C# или Boo.

Различие между Awake и Start заключается в том, что Awake вызывается, когда загружается сцена, а Start iвызывается непосредственно перед первым вызовом Update или FixedUpdate . Все функции Awake вызываются перед любым вызовом функции Start .

3. Имя класса должно соответствовать имени файла.

В Javascript имя класса неявно устанавливается совпадающим с именем файла (минус расширение файла). В C# и Boo. это нужно делать вручную.

4. Корутины имеют иной синтаксис в c#.

В C# корутины имеют тип возвращаемого значения - IEnumerator и Вам нужно использовать yield return ... ; вместо yield ... ;

using System.Collections;

using UnityEngine;

public class NewBehaviourScript : MonoBehaviour {

// C# coroutine

IEnumerator SomeCoroutine () {

// Wait for one frame

yield return 0;

// Wait for two seconds

yield return new WaitForSeconds (2);

}

}

5. Не используйте пространства имен.

На данный момент Unity не поддерживает размещение Ваших скриптов в пространствах имен. Это требование будет отменено в будущих версиях.

6. Только публичные поля сериализуются и показываются в инспекторе.

Приватные и защищенные поля показываются только в Debug Mode. Свойства не сериализуются и не показываются в инспекторе.

7. Избегайте использования конструкторов или инициализации переменных.

Никогда не используйте конструкторов или инициализации переменных в скриптах производных от MonoBehaviour. Вместо этого используйте функции Awake или Start для этих целей. Юнити автоматически вызывает конструктор, даже в режиме редактора. Это обычно происходит непосредственно после компиляции скрипта для установки всех переменных в значение по умолчанию. Мало того, что это может привести к вызову конструктора непредвиденное число раз, но он также может быть вызван и для префабов или неактивных игровых объектов.

Использование конструктора в классах производных от MonoBehaviour, приведет к тому, что он будет вызван нежелательное число раз и в некоторых случаях вызовет крах Unity.

Используйте конструктор только если вы наследуетесь от ScriptableObject.

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

Так что если Вы хотите реализовать шаблон singleton НЕ используйте конструктор. Используйте вместо него Awake. На самом деле нет причин иметь хоть какой-то код в конструкторе класса унаследованного от MonoBehaviour.

Компиляция

Unity компилирует все скрипты в файлы dll.NET. .dll копмилируются в нативный код в рантайм.

Это приводит к чрезвычайно быстрому выполнению скриптов - приблизительно в 20 раз быстрее чем традиционный javascript и на 50% медленнее чем нативный C++ код. Unity нужно некоторое время для компиляции всех Ваших скриптов когда Вы сохраняете их. Вы можете видеть что Unity еще компилирует их по маленькому вращающемуся прогрессбару в нижнем правом углу главного окна Unity.

Компиляция скриптов происходит в 4 шага:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]