» Actor-компоненты | Лекс | 436 | 12.04.10
» Раздел : Unreal Tournament

Программирование в UDK.
»    Сохранение игры в UDK
»    Конфигурационные файлы
»    Работа с DLL
»    Actor-компоненты

Использование Актор-компонентов

ActorComponent и PrimitiveComponent

ActorComponent это класс объекта, который может быть установлен в мире.
PrimitiveComponent это тот ActorComponent, который отвечает за рендеринг или столкновение объектов.

Добавление компонентов

Пример:
class Actor extends Object;

var const array<ActorComponent>   Components;

defaultproperties
{
   Begin Object Class=SpriteComponent Name=Sprite
      Sprite=S_Actor
      HiddenGame=True
   End Object
   Components.Add(Sprite)
}

Изменение компонентов

Пример:
class Trigger extends Actor;

defaultproperties
{
   Begin Object Name=Sprite
      Sprite=S_Trigger
   End Object
}

Удаление компонентов

Пример:
class StaticMeshActor extends Actor;

defaultproperties
{
   Components.Remove(Sprite)
   …
}
Прототип компонента Sprite по умолчанию не ссылается на свойства класса StaticMeshActor

Шаблоны компонентов

Шаблоны используются для объявления по умолчанию компонентов актор-класса. Шаблон это именованный объект, который содержит стандартные параметры для компонента стандартной ссылки свойства класса (Вот такое будет краткое определение).
Шаблоны наследуются подклассами класса, в котором они были объявлены. В каждый таком подклассе можно изменить набор индивидуальных свойств, унаследованных от шаблона.

Создание шаблона

Шаблон компонента, объявленный по умолчанию, будут выглядеть так:
Begin Object Class=SpriteComponent Name=Sprite
   Sprite=Texture2D'EngineResources.S_Actor'
   HiddenGame=True
   AlwaysLoadOnClient=False
   AlwaysLoadOnServer=False
End Object
Естественно это с учетом свойств класса

Установка и подключение шаблона

Пример:
 Begin Object Class=SpriteComponent Name=Sprite
   // Здесь присваиваются значения
End Object
Components.Add(Sprite)

Изменение свойств шаблона, унаследованных от старшего класса

Как я уже говорил, шаблон наследуется подклассом класса шаблона. Этот пример наследует щаблон актора Sprite и изменяет только спрайт:
Begin Object Name=Sprite
   Sprite=Texture2D'EngineResources.S_SkyLight'
End Object

Динамически созданные компоненты

Для динамического создания компонента используется новый оператор UnrealScript - AttachComponent.
Работают с ним так.
 local StaticMeshComponent NewComponent;
NewComponent = new(self) class'StaticMeshComponent';
// Здесь присваиваем статик меш.
AttachComponent(NewComponent);
Для снятие аттача используется метод DetachComponent. Когда на компонент ничего не ссылается он уничтожается.

Общие параметры PrimitiveComponent

ТипИмяОписание
BooleanAlwaysLoadOnClientЕсли AlwaysLoadOnClient = False, примитив имеет HiddenGame = True и CollideActors = False, примитив не будет загружен в игру.
BooleanAlwaysLoadOnServerЕсли AlwaysLoadOnServer = False, примитив имеет CollideActors = False, примитив не будет загружен на сервере.
BooleanBlockActorsЕсли PrimitiveComponent имеет строку collision enabled, BlockActors определяет столкновения примитивов и будет блокировать других участников.
BooleanCastShadowИстинно, если PrimitiveComponent имеет тень, иначе – ложно
BooleanCollideActorsЕсли один из акторов bCollideActors или CollideActors является ложным, примитив не будет просчитывать столкновения.
BooleanHiddenEditorЛожно, если PrimitiveComponent должен быть вынесен в редактор, иначе - истинно.
BooleanHiddenGameЛожно, если PrimitiveComponent должен быть вынесен в игре, иначе истинно

Встроенные типы компонентов

  • PrimitiveComponent
  • ArrowComponent
  • CameraConeComponent
  • CylinderComponent
  • DrawFrustumComponent
  • MeshComponent
    • StaticMeshComponent
    • SkeletalMeshComponent
    • ParticleSystemComponent
    • SpriteComponent
  • LightComponent
  • DirectionalLightComponent
  • PointLightComponent
  • SpotLightComponent
  • SkyLightComponent
  • AudioComponent
  • HeightFogComponent
  • SceneCaptureComponent
  • SceneCapture2DComponent
  • SceneCaptureCubeMapComponent
  • SceneCaptureParaboloidComponent
  • SceneCaptureReflectComponent
» Комментарии

| » | 1 | 21:26 | 12.04.10 | ScorpioT1001 [п]

Хорошо, что есть кто-то, кто эим занимается. Найти бы ещё тех, кто этим интересуется..

| » | 2 | 21:42 | 12.04.10 | BK.Jugg [п]

+1 :(
хотя, если активно заполнять базу, то, возможно люди сами потянутся.

Всего комментариев : 2

» Добавить комментарий
» Для доступа к этой функции вы должны быть авторизованы на форуме. Заполните форму для авторизации, или зарегистрируйтесь.


Логин :    Пароль :