Object und Handle Erklärung
Übersicht

mpreuBetreff: Object und Handle Erklärung |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
konnte nirgends wirklich was darüber finden...
was macht man damit genau? ist das einfach nur ein handle-pointer auf ein object?(type) also handle weist einen handle einem type zu und mit object greift man darauf direkt zu... also auf das ganze object eben |
||
![]() |
DAK |
![]() Antworten mit Zitat ![]() |
---|---|---|
Die Hilfedatei dazu ist eigentlich ganz gut. Schau die dir mal an.
Ansonsten: Wenn du ein Objekt von einem Type hast, also eine konkrete Instanz von einem Type, und später auf die einzeln zugreifen willst, statt durch die ganze Liste aller Objekte dieses Types zu gehen, kannst du dir mit Handle eine Referenz auf das Objekt anlegen, auf die du dann später mit Object zugreifen kannst. Beispiel dafür: Auf dem Bildschirm hast du haufenweise Einheiten. Du kannst diese Einheiten einzeln anwählen, und der angewählten Einheit Befehle geben. Diese Befehle zählen dann nur für diese eine Einheit, gehen also alle anderen nix an. Beim Anwählen machst du dann ungefähr sowas: BlitzBasic: [AUSKLAPPEN] Local selectedUnit = Handle(unit) selectedUnit ist die Variable in der das Handle gespeichert wird, unit die Einheit, die ausgewählt wird und ein Objekt des Types TUnit. Um die Einheit dann wieder zu kriegen, um ihr Befehle zu erteilen machst du dann sowas: BlitzBasic: [AUSKLAPPEN] unit.TUnit = Object.TUnit(selectedUnit) Handle gibt ein Integer aus, und Object nimmt dieses Integer wieder an. Somit kannst du die zwischengespeicherte Variable genauso verwenden wie Integers, also z.B. als Funktionsrückgabewert oder um ihn in Arrays abzuspeichern oder so. |
||
Gewinner der 6. und der 68. BlitzCodeCompo |
mpreu |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ah alles klar, also schon im groben wie ich mir dachte... | ||
![]() |
count-doku |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wobei, was ich da noch nie verstand, warum nicht gleich unit speichern?
Wenn ich t.Type=New Type mache, habe ich doch in t auch ein Integerhandle drin - wofür also nochmal ein Integer handle holen? Ich kann doch auch in Functions einfach Types übergeben. |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: Wenn ich t.Type=New Type mache, habe ich doch in t auch ein Integerhandle drin Nein, hast du nicht. Types sind keine Integer handles.
In der Sache hast du aber recht - statt mit Handle und Object herum zu wursteln, könnte man es gleich richtig machen. Ein Fall, wo man unbedingt ein Int braucht, um den in einen von mehreren Types zurück zu casten, ist mir noch nie unter gekommen. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
count-doku |
![]() Antworten mit Zitat ![]() |
---|---|---|
ja stimmt Xeres ist kein Integer. Macht aber keinen Unterschied, da man den Type genauso übergeben etc kann. Aber mir fällt ein Fall ein:
Wenn ich in einer 3D Welt objekte in Types habe und diese Entitys sind pickable kann ich in ihrem Namen den Wert von Handle speichern. EntityPick liefert mir das Entity, dann komme ich an den Namen und zack habe ich per Object wieder den ganzen Type. Fraglich nur ob dieses Hin und Hergecaste schneller ist als einfach die Typeliste durchzugehen - wobei bei vielen Objekten... lg, Count-Doku |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group