Unity3D C#
Справка: Manual/ScriptingSection (En/Ru)
Cправка по GUI: GUIScriptingGuide
Руководства: Scripting C# (En + video)
Книги Ru: ( https://cloud.mail.ru/public/5utN/45c8MoX16 )
Unity в действии. Джозеф Хокинг
Искусство создания сценариев в Unity. Алон Торн
Unity Game Development Essentials. Ru
Unity и C# Геймдев от идеи до реализации. 2-е изд.
Ссылки на допресурсы:
Памятка одного товарища >>>
Гоша Дударь: Уроки C# под Unity 5 для начинающих >>> (что-то подсмотреть можно, он обычно очень поверхностно)
Riptutorial Unity3D >>>
[Tproger]
Создание Minecraft на Unity3D Часть1 и Часть2
Как быстро написать игру для Android на Unity >>>
Самый простой способ сделать игру на Unity 5 >>>
Как выполнять сохранение и загрузку игры в Unity >>>
Пишем сапёр на Unity Часть1 Часть2 Часть3
[Habr]
Погружение в скрипты игрового движка Unity3d: Часть1 и Часть2
Про создание платформера на Unity. Часть1 и Часть2
Структура кода в Unity3d - личное мнение и пара трюков >>>
Unity3d. Уроки от Unity 3D Student: В00-В03, В04-В08, В09-В12, В13-В16 (unity3dstudent)
Порядок событий в Unity3D >>>
События C# по-человечески >>>
[YouTube]
loftblog: GameDev c Unity3D (Сергей Мелюков) >>>
AndroidHelper: [C#] для Unity >>>Unity RTS (стратегия в Unity) - Чайные вечера >>>
Microsoft Developer Russia: Создание платформера Unity >>>
Skillbox: Как создать игру на C# и Unity. Часть 1 Часть 2
ExtremeCode: C# в Unity:
#0. Компонентный подход
Жизненный цикл компонента и события
Взаимодействие компонентов
Курсы ITVDN по Unity >>>
Иерархия классов:
Object - базовый класс объектов
GameObject - базовый класс для всех объектов на сценах Unity
Component - базовый класс для всех компонентов внедряемых в объекты Unity
Collider - базовый класс для всех коллайдеров
Behaviour - поведение компонентов
MonoBehaviour - базовый класс скрипта игровых объектов Unity
InvokeRepeating - циклический таймер
UIBehaviour
BaseRaycaster - Базовый класс для всех райкастеров (лучей)
EventSystem - обработку событий в сцене Unity
(jбработчики входа, райкастинга и отправки событий)
Transform - Положение, вращение и масштаб объекта
position - абсолютная позиция
rotation - абсолютный поворот
Translate - смещение
Rigidbody - компонент имитации физики
AddForce - воздействие
velocity - скорость
rb.velocity = new Vector3( Input.GetAxis("Horizontal"), rb.velocity.y, rb.velocity.z );
ScriptableObject - класс для объектов, которые не прикреплены к игровым объектам Unity
Vector3
MoveTowards - перемещение, от текущей точки к целевой точки по прямой.
Physics - Глобальные физические свойства и вспомогательные методы
Quaternion - вращение
identity - не применять поворот, оставить прежним
Input - Интерфейс системы ввода.
Time - информация о времени в игре
Time.deltaTime - в время в секундах, которое потребовалось для отрисовки
последнего кадра
Time-time - время в секундах с начала игры
IPointerClickHandler - интерфейс для получения обратных вызовов OnPointerClick (получение события клик и точки) GameDev c Unity3D часть 4 (Сергей Мелюков)
Руководство по скриптингу Unity
1. Создание и Использование Скриптов
Вывод в консоль:
Debug.Log("_"); // Debug.Log
или
print ("_"); // MonoBehaviour.print
2. Переменные и Inspector
Модификаторы доступа C# (на metanit.com):
public
private
protected
Показать закрытые свойства класса в Inspector:
[SerializeField] // SerializeField
НЕ показывать открытые свойства класса в Inspector:
[System.NonSerialized] // NonSerializable
3. Компоненты. Обращение к другим объектам
Получение компонента:
GetComponent<Rigidbody>(); // GameObject.GetComponent
transform - сокращенно для GetComponent<Transform>();
Приведение типов, различные формы записи:
Rigidbody rigi = gmObj.GetComponent<Rigidbody>();
Rigidbody rigi = gmObj.GetComponent( "Rigidbody" ) as Rigidbody;
Rigidbody rigi = gmObj.GetComponent( typeof(Rigidbody) ) as Rigidbody;
Получение ссылки на конкретный объект:
- создаем публичную ссылку на объект: public GameObject myPlayer;
- в Inspector перетаскиваем нужный объект в поле: "myPlayer"
Поиск объектов по имени:
GameObject.Find("Gun"); // GameObject.Find
Поиск потомков (вложенных объектов) по имени:
transform.Find("Monster/Arm"); // Transform.Find
Поиск объектов по тегу:
GameObject.FindWithTag("Player"); // GameObject.FindWithTag
Поиск всех объектов по тегу (коллекция):
GameObject.FindGameObjectsWithTag("Enemy"); // GameObject.FindGameObjectsWithTag
4. Обработчики событий
Скрипты наследуются от MonoBehaviour поэтому доступны следующие обработчики событий:
Awake - наступает после инициализации всех объектов;
выполняется в любом случае, включен текущий Скрипт или нет;
(не для установки связей между скриптами, используйте Start)
Start - наступает в первом кадре, при включенном текущем Скрипте;
можно установить связи с другими скриптами.
Update - наступает каждый кадр;
(время (сек) прошедшее от предыдущего кадра - Time.deltaTime)
FixedUpdate - фиксированные по времени вызовы, обычно 0,02сек (TimeManager)
Группа событий OnCollision - возникают при соприкосновении текущего объекта с другим (соприкосновение компонентами rigidbody/collider):
OnCollisionEnter - началось соприкосновение (OnCollisionEnter2D для 2D).
OnCollisionExit - прекратилось соприкосновение (OnCollisionExit2D для 2D).
OnCollisionStay - наступает каждый кадр пока collider/rigidbody соприкасается c другим
rigidbody/collider (OnCollisionStay2D для 2D физики).
OnParticleCollision - наступает, когда частица попадает в коллайдер
Группа событий OnTrigger - возникают при вхождении коллайдера текущего объекта в триггер-коллайдер другого объекта:
OnTriggerEnter - наступает в начальный момент вхождения
(OnTriggerEnter2D для 2D).
OnTriggerExit - наступает при выходе
(OnTriggerExit2D для 2D).
OnTriggerStay - наступает каждый кадр пока идет вхождение (OnTriggerStay2D для 2D).
Группа событий OnMouse - возникают при взаимодействии мыши с GUIElement или коллайдером:
OnMouseDown - наступает при нажатии кнопки мыши над GUIElement или коллайдером
OnMouseDrag - наступает каждый кадр пока есть нажатие над GUIElement или коллайдером
OnMouseUp - наступает отжатии кнопки мыши над GUIElement или коллайдером
OnMouseEnter - наступает при начальном попадании указателя мыши
на GUIElement или коллайдер
OnMouseExit - наступает при выходе указателя мыши с GUIElement или коллайдера
OnMouseOver - наступает каждый кадр пока указатель мыши находится над GUIElement
или коллайдером
OnMouseUpAsButton - наступает только тогда, когда кнопка мыши отпущена над тем же
GUIElement или коллайдером, над которым была нажата кнопка мышь
OnGUI - наступает при взаимодействии с пользовательскими элементами (контроллами)
(GUI - GUIScriptingGuide)
5. Время и кадры
6. Создание и уничтожение игровых объектов (GameObjects)
Создание нового объекта на основе префаба или существующего объекта:
Instantiate(prefab); // Instantiate(ссылка на префаб или объект)
или
Instantiate(prefab, new Vector3(i * 2.0f, 0, 0), Quaternion.identity);
Создание примитивов CreatePrimitive - Sphere, Capsule, Cylinder, Cube, Plane, Quad:
GameObject cube = GameObject.CreatePrimitive( PrimitiveType.Cube );
Уничтожение - Destroy:
Destroy (gameObject); - удаление объекта по ссылке
Destroy (this); - удаление текущего скрипта
Destroy (rigidbody); - удаление компонента
Destroy (gameObject, 5); - удаление объекта с задержкой 5 сек
7. Coroutines
8. Порядок выполнения функций событий
9. События - UnityEvents
UnityEventBase - базовый абстрактный класс UnityEvent
UnityEvent - событие без аргументов
События c аргументами:
UnityEvent<T0>, UnityEvent<T0,T1>, UnityEvent<T0,T1,T2>, UnityEvent<T0,T1,T2,T3>
10. Вектора. Понимание векторной арифметики - VectorArithmetic
Автор, огромнейшее тебе спасибо!
ОтветитьУдалитьЧем смог...
УдалитьЭтот комментарий был удален автором.
УдалитьСпасибо, вы сэкономили мне кучу времени. Зная эти темы я смогу создавать простые игры?
ОтветитьУдалитьВсе возможно...
Удалить