Dela via


Komponenter

Azure Remote Rendering använder mönstret Entitetskomponentsystem . Entiteter representerar objektens position och hierarkiska sammansättning, men komponenterna ansvarar för att implementera beteende.

De vanligaste typerna av komponenter är mesh components, som lägger till nät i återgivningspipelinen. På samma sätt används ljuskomponenter för att lägga till belysning och skärplanskomponenter för att skära öppna nät.

Alla dessa komponenter använder transformeringen (position, rotation, skala) för den entitet som de är anslutna till som referenspunkt.

Arbeta med komponenter

Du kan enkelt lägga till, ta bort och manipulera komponenter programmatiskt:

// create a point light component
RenderingSession session = GetCurrentlyConnectedSession();
PointLightComponent lightComponent = session.Connection.CreateComponent(ObjectType.PointLightComponent, ownerEntity) as PointLightComponent;

lightComponent.Color = new Color4Ub(255, 150, 20, 255);
lightComponent.Intensity = 11;

// ...

// destroy the component
lightComponent.Destroy();
lightComponent = null;
// create a point light component
ApiHandle<RenderingSession> session = GetCurrentlyConnectedSession();

ApiHandle<PointLightComponent> lightComponent = session->Connection()->CreateComponent(ObjectType::PointLightComponent, ownerEntity)->as<PointLightComponent>();

// ...

// destroy the component
lightComponent->Destroy();
lightComponent = nullptr;

En komponent är kopplad till en entitet när den skapas. Det går inte att flytta den till en annan entitet efteråt. Komponenter tas uttryckligen bort med Component.Destroy() eller automatiskt när komponentens ägarentitet förstörs.

Endast en instans av varje komponenttyp kan läggas till i en entitet i taget.

Unity-specifika

Unity-integreringen har ytterligare tilläggsfunktioner för att interagera med komponenter. Se Unity-spelobjekt och -komponenter.

API-dokumentation

Nästa steg