- •Unity Script
- •Глава 1 Введение
- •Глава 2 Сценарии
- •Глава 3 Основные понятия
- •1. Назначение ссылочных типов переменных при помощи инспектора
- •2. Расположение объектов в окне иерархии
- •3. Имена и теги
- •4. Принятие в качестве параметра
- •5. Все скрипты одного типа
- •1. Используйте статическую типизацию.
- •2. Используйте #pragma strict
- •3. Кешируйте найденные компоненты.
- •4. Используйте встроенные масивы.
- •5. Не вызывайте функцию, если Вам это не нужно.
- •1. Носледование от MonoBehaviour
- •2.Использование функций Awake или Start для инициализации.
- •3. Имя класса должно соответствовать имени файла.
- •4. Корутины имеют иной синтаксис в c#.
- •5. Не используйте пространства имен.
- •6. Только публичные поля сериализуются и показываются в инспекторе.
- •7. Избегайте использования конструкторов или инициализации переменных.
- •1. Все скрипты в "Standard Assets", "Pro Standard Assets" или "Plugins" компилируются первыми.
- •2. Все скрипты в "Standard Assets/Editor", "Pro Standard Assets/Editor" или "Plugins/Editor" компилируются далее.
- •3. Все другие скрипты вне "Editor" компилируются далее.
- •4. Все скрипты в папке "Editor" компилируются последними.
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 шага:
