Внутренности движка

Общие вопросы о Unity3D

Внутренности движка

Сообщение bomberest 18 окт 2012, 12:54

Помогите понять: с помощью Mono на юнити компилируются скрипты в assembly. Но что потом юнити с этой сборкой делает? Как на уровне движка вешаются скрипты, как они вообще воздействуют на игру и как впиливаются в билд игры?
Основы Unity3D Свой 2D-движок Фильм для разработчиков Кастомизация едитора
Лекции игрового программирования
Skype: Andrewf56 | Steam: bomberest (-AnF-) | Vk: _https://vk.com/andrewshut
Аватара пользователя
bomberest
Старожил
 
Сообщения: 538
Зарегистрирован: 22 июн 2011, 14:38
Откуда: Минск
  • ICQ

Re: Внутренности движка

Сообщение seaman 18 окт 2012, 14:02

Ну как я понимаю. В движке реализован класс MonoBehaviour. В нем есть конструктор. Этот конструктор вызывается в рантайм при создании экземпляра любого класса производного от MonoBehaviour. В конструкторе производится регистрация в движке вновь созданного экземпляра класса - т.е. подписка на стандартные события Update и т.п. Как подписка делается?- скорее всего просто типа Delegate += В движке в цикле кадра этот делегат просто запускается на выполнение, т.е. автоматом запускаются все зарегистрированные методы Update
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Внутренности движка

Сообщение bojlahg 18 окт 2012, 18:09

Ничего там сложного не происходит. Скорее всего из нативного кода вызываются определенные методы из assembly. Возможно через рефлекшн получаются нужные экземпляры классов(например для вызова Update и т.д.)
Мои проекты: MahJah Star Factory Cop Car Swash! Spline Editor
Аватара пользователя
bojlahg
UNIверсал
 
Сообщения: 392
Зарегистрирован: 13 авг 2011, 10:57
Откуда: Сатка
Skype: bojlahg
  • Сайт

Re: Внутренности движка

Сообщение seaman 18 окт 2012, 18:14

Возможно через рефлекшн получаются нужные экземпляры классов

Имхо - нет. Затратно это - рефлекшн.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Внутренности движка

Сообщение bomberest 18 окт 2012, 21:28

Пример из UnityEngine.dll :
Синтаксис:
Используется csharp
[WrapperlessIcall, TypeInferenceRule(TypeInferenceRules.TypeReferencedByFirstArgument)]
[MethodImpl(MethodImplOptions.InternalCall)]
public extern Component GetComponent(Type type);

У класса Component есть метод GetComponent, и это всё его описание. Где можно найти продолжение этого кода?
Основы Unity3D Свой 2D-движок Фильм для разработчиков Кастомизация едитора
Лекции игрового программирования
Skype: Andrewf56 | Steam: bomberest (-AnF-) | Vk: _https://vk.com/andrewshut
Аватара пользователя
bomberest
Старожил
 
Сообщения: 538
Зарегистрирован: 22 июн 2011, 14:38
Откуда: Минск
  • ICQ

Re: Внутренности движка

Сообщение bojlahg 18 окт 2012, 21:51

extern видишь? реализация гдето в другой dll, скорее всего в нативном коде.
Мои проекты: MahJah Star Factory Cop Car Swash! Spline Editor
Аватара пользователя
bojlahg
UNIверсал
 
Сообщения: 392
Зарегистрирован: 13 авг 2011, 10:57
Откуда: Сатка
Skype: bojlahg
  • Сайт

Re: Внутренности движка

Сообщение bomberest 19 окт 2012, 08:45

Как происходит расчёт позиции в мировых координатах (как мы видим объекты), когда они наследуются от родителя (вложенные объекты). Если сдвигается родитель, то сдвигается и ребёнок. Нужна сама теория вложенных трансформов, буду благодарен за ссылку или объяснение. (popcorn1)
Основы Unity3D Свой 2D-движок Фильм для разработчиков Кастомизация едитора
Лекции игрового программирования
Skype: Andrewf56 | Steam: bomberest (-AnF-) | Vk: _https://vk.com/andrewshut
Аватара пользователя
bomberest
Старожил
 
Сообщения: 538
Зарегистрирован: 22 июн 2011, 14:38
Откуда: Минск
  • ICQ

Re: Внутренности движка

Сообщение seaman 19 окт 2012, 11:03

Как происходит расчёт позиции в мировых координатах

Перемножением матриц трансформации.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Внутренности движка

Сообщение bojlahg 19 окт 2012, 11:07

bomberest писал(а):Как происходит расчёт позиции в мировых координатах (как мы видим объекты), когда они наследуются от родителя (вложенные объекты). Если сдвигается родитель, то сдвигается и ребёнок. Нужна сама теория вложенных трансформов, буду благодарен за ссылку или объяснение. (popcorn1)

Скорее всего храниться локальная матрица и ссылка на матрицу родительского объекта (возможно хранят не матрицу, а координаты, масштаб и кватернион). Кроме того кешируют значения матрицы = делают перерасчет (умножение матриц) только при изменении трансформа. При изменении трансформов идет рекурсивоне обонвление трансформов дочерних узлов.
Мои проекты: MahJah Star Factory Cop Car Swash! Spline Editor
Аватара пользователя
bojlahg
UNIверсал
 
Сообщения: 392
Зарегистрирован: 13 авг 2011, 10:57
Откуда: Сатка
Skype: bojlahg
  • Сайт

Re: Внутренности движка

Сообщение bomberest 19 окт 2012, 12:37

seaman писал(а):
Как происходит расчёт позиции в мировых координатах

Перемножением матриц трансформации.

Изображение Просто увидел картинку, порадовала :)
Основы Unity3D Свой 2D-движок Фильм для разработчиков Кастомизация едитора
Лекции игрового программирования
Skype: Andrewf56 | Steam: bomberest (-AnF-) | Vk: _https://vk.com/andrewshut
Аватара пользователя
bomberest
Старожил
 
Сообщения: 538
Зарегистрирован: 22 июн 2011, 14:38
Откуда: Минск
  • ICQ

Re: Внутренности движка

Сообщение Рэндом 19 окт 2012, 15:51

Почитайте про маршалинг.
Аватара пользователя
Рэндом
UNIверсал
 
Сообщения: 485
Зарегистрирован: 02 июн 2012, 04:06

Re: Внутренности движка

Сообщение seaman 19 окт 2012, 18:48

Почитайте про маршалинг.

А при чем тут маршаллинг? Или Вы советуете писать всю математику на плюсах и для этого изучать способы передачи данных туда/оттуда?
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Внутренности движка

Сообщение KBEP 19 окт 2012, 23:45

прочитать надо про граф сцены и хотя бы OpenGL Red Book
Аватара пользователя
KBEP
Старожил
 
Сообщения: 598
Зарегистрирован: 24 сен 2012, 23:23
Откуда: Калининград, СПб, Северодвинск

Re: Внутренности движка

Сообщение bomberest 20 окт 2012, 00:30

KBEP писал(а):прочитать надо про граф сцены и хотя бы OpenGL Red Book

Спасибо за граф сцены, не знал такого термина. Использую DirectX 11
http://www.xnadev.ru/articles.php?article_id=16 Вроде, хорошая статься про граф сцены на примере XNA
Основы Unity3D Свой 2D-движок Фильм для разработчиков Кастомизация едитора
Лекции игрового программирования
Skype: Andrewf56 | Steam: bomberest (-AnF-) | Vk: _https://vk.com/andrewshut
Аватара пользователя
bomberest
Старожил
 
Сообщения: 538
Зарегистрирован: 22 июн 2011, 14:38
Откуда: Минск
  • ICQ

Re: Внутренности движка

Сообщение Рэндом 20 окт 2012, 07:15

seaman писал(а):
Почитайте про маршалинг.

А при чем тут маршаллинг? Или Вы советуете писать всю математику на плюсах и для этого изучать способы передачи данных туда/оттуда?

Это ответ на первый пост о взаимодействии управляемого и не управляемого кода. А маршалинг это как раз про взаимодействие.
Аватара пользователя
Рэндом
UNIверсал
 
Сообщения: 485
Зарегистрирован: 02 июн 2012, 04:06

След.

Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7