De/CHandle: Difference between revisions

From Valve Developer Community
< De
Jump to navigation Jump to search
m (title)
m (obsolete language category)
 
(6 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{DISPLAYTITLE:CHandle}}
{{lang|title=CHandle|CHandle}}
{{otherlang2
|en=CHandle
}}
{{toc-right}}
{{toc-right}}


'''CHandle''' ist eine C++ Klasse, die eine eindeutige 32-Bit ID (entindex + serial number) für jede entfernte und neu erstellte Entity im Spiel darstellt. Es wird verwendet, um auf Entities zu verweisen, wo [[pointer:de|Pointer]] und [[entity index:de|Entity Indizes]] unsicher sind; hauptsächlich über die Client-/Server-Kluft und nach dem Laden eines Spielstandes.
'''CHandle''' ist eine C++ Klasse, die eine eindeutige 32-Bit ID (entindex + serial number) für jede entfernte und neu erstellte Entity im Spiel darstellt. Es wird verwendet, um auf Entities zu verweisen, wo {{L|Accessing Other Entities|Pointer}} und {{L|entity index|Entity Indizes}} unsicher sind; hauptsächlich über die Client-/Server-Kluft und nach dem Laden eines Spielstandes.


{{tip:de|Zugriffe auf CHandles sind langsamer als Zugriffe auf Pointer. Wenn man Pointer zu Zugriffszwecken erzeugt und sie Spielstände unterstützen sollen, muss man sie über <code>[[Restore()]]</code> neu definieren!}}
{{tip|Zugriffe auf CHandles sind langsamer als Zugriffe auf Pointer. Wenn man Pointer zu Zugriffszwecken erzeugt und sie Spielstände unterstützen sollen, muss man sie über <code>{{L|Restore()}}</code> neu definieren!}}


== Gebrauch ==
== Gebrauch ==
Line 38: Line 35:
== Siehe auch ==
== Siehe auch ==


* [[Accessing other entities:de]]
* {{L|Accessing Other Entities}}
* [[Entity index:de]]
* {{L|Entity index}}
* [[Networking Entities#Networking_entities|Networking Entities]]
* {{L|Networking Entities#Networking_entities|Networking Entities}}


[[Category:Variables:de]]
{{ACategory|Variables}}
[[Category:Glossary:de]]
{{ACategory|Glossary}}
[[Category:German]]
[[Category:German]]

Latest revision as of 03:09, 22 August 2024

English (en)Deutsch (de)Translate (Translate)

CHandle ist eine C++ Klasse, die eine eindeutige 32-Bit ID (entindex + serial number) für jede entfernte und neu erstellte Entity im Spiel darstellt. Es wird verwendet, um auf Entities zu verweisen, wo Pointer(en) und Entity Indizes(en) unsicher sind; hauptsächlich über die Client-/Server-Kluft und nach dem Laden eines Spielstandes.

Tip.pngTipp:Zugriffe auf CHandles sind langsamer als Zugriffe auf Pointer. Wenn man Pointer zu Zugriffszwecken erzeugt und sie Spielstände unterstützen sollen, muss man sie über Restore()(en) neu definieren!

Gebrauch

CHandle<YourStoredClass> hMyHandle;

Ein CHandle ist den Pointern sehr ähnlich, aber weil es eine maßgeschneiderte C++ Klasse ist und kein built-in Feature, ist eine besondere Syntax an manchen Stellen notwendig:

  • Man muss einen Pointer zum Objekt anbinden, nicht das Objekt selbst.
  • Des CHandles Get() Funktion oder ein Cast ist erforderlich, um auf die gespeicherte Klasse zuzugreifen.
  • IsValid() wird benutzt, um zu überprüfen, ob ein Wert gespeichert wird.
  • Um ein CHandle ungültig zu machen, muss Term() aufgerufen oder INVALID_EHANDLE_INDEX zugeordnet werden.

EHANDLE

CHandle wird häufig durch das EHANDLE typedef benutzt, welches die Kurzform für CHandle<C_BaseEntity> ist. Wenn man eine bestimmte Klasse speichern will, ist es besser, einen spezifischeren CHandle manuell zu deklarieren (siehe vorheriger Abschnitt).

Beispiel

// Erzeuge einen Pointer auf eine Entity
CBasePlayer* pPlayer = gEntList.FindEntityByClassname( NULL, "player" );
 
// speichere es (zwei Mal, zu Demonstrationszwecken)
EHANDLE hPlayer = pPlayer;
CHandle<CBasePlayer> hPlayer_ = pPlayer;
 
// konvertiere das EHANDLE zurück in einen CBasePlayer-Pointer
pPlayer = dynamic_cast<CBasePlayer*>( hPlayer.Get() );

Siehe auch