HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-03-10
1 <p>Каждый игровой объект в Unity состоит из компонентов. Любой компонент четко реализует конкретный набор поведений, необходимых для того, чтобы выполнялся<a>GameObject</a>. Почему объект получается таким, каков он есть? Именно благодаря вкладу, который вносят компоненты, из которых этот объект состоит.</p>
1 <p>Каждый игровой объект в Unity состоит из компонентов. Любой компонент четко реализует конкретный набор поведений, необходимых для того, чтобы выполнялся<a>GameObject</a>. Почему объект получается таким, каков он есть? Именно благодаря вкладу, который вносят компоненты, из которых этот объект состоит.</p>
2 <p>На картинках ниже - объект "Warrior". Он показан над окном "Инспектор" в интерфейсе игрового движка Unity. Обратите внимание на проиллюстрированные разделы (Animator, Rigidbody, Collider) - они, как раз таки, и являются компонентами, слагающими этот объект.</p>
2 <p>На картинках ниже - объект "Warrior". Он показан над окном "Инспектор" в интерфейсе игрового движка Unity. Обратите внимание на проиллюстрированные разделы (Animator, Rigidbody, Collider) - они, как раз таки, и являются компонентами, слагающими этот объект.</p>
3 <p>Представим, к примеру, что речь идет про автомобиль в игре:</p>
3 <p>Представим, к примеру, что речь идет про автомобиль в игре:</p>
4 <p>- у единственного "видимого" элемента авто будет компонент<strong>Renderer</strong>, отрисовывающий машину и, скорее всего, компонент<strong>Collider</strong>, который задает для авто границы столкновений; - если авто представляет персонажа, то у самого объекта Car возможно наличие<strong>Player Input Controller</strong>(контроллера ввода от персонажа). Этот контроллер принимает все события, связанные с нажатиями клавиш, а также транслирует их в код, который, в свою очередь, отвечает за движение автомобиля в игре.</p>
4 <p>- у единственного "видимого" элемента авто будет компонент<strong>Renderer</strong>, отрисовывающий машину и, скорее всего, компонент<strong>Collider</strong>, который задает для авто границы столкновений; - если авто представляет персонажа, то у самого объекта Car возможно наличие<strong>Player Input Controller</strong>(контроллера ввода от персонажа). Этот контроллер принимает все события, связанные с нажатиями клавиш, а также транслирует их в код, который, в свою очередь, отвечает за движение автомобиля в игре.</p>
5 <p>Нельзя не сказать, что есть возможность писать большие и сложные компоненты, в которых компонент один в один равен кодируемому объекту (к примеру, компонент player содержит код, который полностью описывает персонажа, а компонент enemy, в свою очередь, полностью кодирует противника). Как правило, принято извлекать логику и дробить ее на небольшие "обтекаемые" кусочки, которые будут соответствовать конкретным признакам. К примеру: • все объекты, которые обладают здоровьем, будь то Player или Enemy, могут иметь компонент LivingObject, который задает исходное значение здоровья, принимает урон и приводит в исполнение смерть, если объект умирает; • у игрока может быть компонент ввода, который контролирует сообщаемые ему движения, а у врага - аналогичный компонент, реализованный посредством искусственного интеллекта.</p>
5 <p>Нельзя не сказать, что есть возможность писать большие и сложные компоненты, в которых компонент один в один равен кодируемому объекту (к примеру, компонент player содержит код, который полностью описывает персонажа, а компонент enemy, в свою очередь, полностью кодирует противника). Как правило, принято извлекать логику и дробить ее на небольшие "обтекаемые" кусочки, которые будут соответствовать конкретным признакам. К примеру: • все объекты, которые обладают здоровьем, будь то Player или Enemy, могут иметь компонент LivingObject, который задает исходное значение здоровья, принимает урон и приводит в исполнение смерть, если объект умирает; • у игрока может быть компонент ввода, который контролирует сообщаемые ему движения, а у врага - аналогичный компонент, реализованный посредством искусственного интеллекта.</p>
6 <p>На протяжении своего жизненного цикла компоненты получают разные обратные вызовы, которые в среде Unity называются Сообщениями. В частности, к Сообщениям относятся: - OnEnable/OnDisable, - Start, - OnDestroy, - Update и прочие.</p>
6 <p>На протяжении своего жизненного цикла компоненты получают разные обратные вызовы, которые в среде Unity называются Сообщениями. В частности, к Сообщениям относятся: - OnEnable/OnDisable, - Start, - OnDestroy, - Update и прочие.</p>
7 <p>Если объект реализует метод Update(), то данный метод будет вызываться Unity в каждом кадре игрового цикла, и происходить это будет до тех пор, пока объект является активным, а заданный компонент действует. Эти методы можно пометить private - в таком случае игровой движок Unity все равно будет вызывать их.</p>
7 <p>Если объект реализует метод Update(), то данный метод будет вызываться Unity в каждом кадре игрового цикла, и происходить это будет до тех пор, пока объект является активным, а заданный компонент действует. Эти методы можно пометить private - в таком случае игровой движок Unity все равно будет вызывать их.</p>
8 <p>Наверное, вы уже догадались, что компоненты могут предоставлять и публичные методы. В таком случае другие компоненты могут принимать ссылку на данный компонент и вызывать эти публичные методы.</p>
8 <p>Наверное, вы уже догадались, что компоненты могут предоставлять и публичные методы. В таком случае другие компоненты могут принимать ссылку на данный компонент и вызывать эти публичные методы.</p>
9 <p>Остается добавить, что в коде есть MonoBehavior - вездесущий родительский класс, предназначенный для представления компонентов. Большая часть невстроенных компонентов будут наследовать от MonoBehavior, а он уже, в свою очередь, будет наследовать от Behavior и Component, соответственно.</p>
9 <p>Остается добавить, что в коде есть MonoBehavior - вездесущий родительский класс, предназначенный для представления компонентов. Большая часть невстроенных компонентов будут наследовать от MonoBehavior, а он уже, в свою очередь, будет наследовать от Behavior и Component, соответственно.</p>
10 <p><em>По материалам статьи "<a>Basic Concepts in Unity for Software Engineers</a>".</em></p>
10 <p><em>По материалам статьи "<a>Basic Concepts in Unity for Software Engineers</a>".</em></p>
11  
11