Was brauchen wir?
Visual Studio 2019
- MSBuild
- Windows 10 SDK 10.0.18632.0
Unity 2019.4.3f1
- Mit den UWP Build Tools
Das MRTK an der Stelle die 2 Downloads: Foundation und Extensions
Siehe auch MRTK
WeiterlesenVisual Studio 2019
Unity 2019.4.3f1
Das MRTK an der Stelle die 2 Downloads: Foundation und Extensions
Siehe auch MRTK
WeiterlesenEinfach mal so die wichtigen Tasten aus meiner Sicht um in das Spiel zu kommen.
F1= Mobiglass
F4=Kamera ändern
T=Taschenlampe
F11=Freuende liste
F12=Chat
F=Aktion
STRG=Ducken
STRG(Lang)=Kriechen
1=Waffe ziehen
V=Waffe weg
Y=Wenn die Kamera draußen ist diese frei bewegen
ALT+F(Halten)=Aussteigen
Q,W,E,A,S,D,STRG,Leer=Fliegen
X=Handbremse
V=Geschwindigkeitsmodi wechseln
shift*2=Booster aktivieren
F3=Cursor aktivieren
F=Gegenmaßnahmen wechseln
F(halten)=Gegenmaßnahmen auswerfen
B=Quantantrieb
R=Nächster Gegner
T=Nächstes Ziel
N=Landemodus –> F=Landeerlaubnis erfragen
ALT GR+N=Automatisches Landen
Ich hatte kürzlich das Problem das ich eine FXML im Scenebuilder bearbeiten wollte und die FX-IDs vergeben wollte.
Das auswählen einer Textbox hat ca. 30 Sekunden gedauert sowie das anschließende auswählen der ID über die Combobox.
Hintergrund war der das der Controller der zu der FXML gehört recht groß ist und dieser bei jedem klick im Scenebuilder neu geparst wird.
Der Hack wird in folgender Klasse gemacht: com.oracle.javafx.scenebuilder.kit.glossary.BuiltinGlossary
Hierzu wird das letzte Ergebnis + das Letzte Editierdatum der Datei gemerkt:
[codesyntax lang=“java“]
//NEU private long lastUpdatequeryControllerClasses = 0; //NEU private List<String> resqueryControllerClasses ; @Override public List<String> queryControllerClasses(URL fxmlLocation) { if (fxmlLocation == null ) { return Collections.emptyList(); } else { File fxmlFile = getFileFromURL(fxmlLocation); if (! fxmlFile.exists()) { // Suspicious ! May I print some warning ? or assert the file exists ? return Collections.emptyList(); } else { //Speedhack if(resqueryControllerClasses == null || lastUpdatequeryControllerClasses < fxmlFile.lastModified()){ List<String> res = new ArrayList<>(); for (ControllerClass cc : ControllerClass.discoverFXMLControllerClasses(fxmlFile)) { if (! res.contains(cc.getClassName())) { res.add(cc.getClassName()); } } Collections.sort(res); //NEU resqueryControllerClasses=res; lastUpdatequeryControllerClasses = fxmlFile.lastModified(); return res; } return resqueryControllerClasses; } } } //NEU private long lastUpdatequeryFxIds = 0; private List<String> resqueryFxIds ; @Override public List<String> queryFxIds(URL fxmlLocation, String controllerClass, Class<?> targetType) { // TODO fix DTL-5878 assert controllerClass != null; if (fxmlLocation == null ) { return Collections.emptyList(); } else { File fxmlFile = getFileFromURL(fxmlLocation); if (! fxmlFile.exists()) { // Suspicious ! May I print some warning ? or assert the file exists ? return Collections.emptyList(); } else { //NEU if(resqueryFxIds == null || lastUpdatequeryFxIds < fxmlFile.lastModified()){ List<String> res = new ArrayList<>(); for (ControllerClass cc : ControllerClass.discoverFXMLControllerClasses(fxmlFile)) { if (controllerClass.equals(cc.getClassName())) { res.addAll(cc.getFxIds()); break; // discoverFXMLControllerClasses may return duplicates. // The first matching class name is good enough for now. } } Collections.sort(res); resQueryEventHandlers=res; lastUpdatequeryFxIds = fxmlFile.lastModified(); return res; } return resqueryFxIds; } } } //NEU private long lastUpdatequeryEventHandlers = 0; private List<String> resQueryEventHandlers ; @Override public List<String> queryEventHandlers(URL fxmlLocation, String controllerClass) { assert controllerClass != null; if (fxmlLocation == null ) { return Collections.emptyList(); } else { File fxmlFile = getFileFromURL(fxmlLocation); if (! fxmlFile.exists()) { // Suspicious ! May I print some warning ? or assert the file exists ? return Collections.emptyList(); } else { //NEU if(resQueryEventHandlers == null || lastUpdatequeryEventHandlers < fxmlFile.lastModified()){ List<String> res = new ArrayList<>(); for (ControllerClass cc : ControllerClass.discoverFXMLControllerClasses(fxmlFile)) { if (controllerClass.equals(cc.getClassName())) { res.addAll(cc.getEventHandlers()); break; // discoverFXMLControllerClasses may return duplicates. // The first matching class name is good enough for now. } } Collections.sort(res); resQueryEventHandlers = res; lastUpdatequeryEventHandlers = fxmlFile.lastModified(); return res; }return resQueryEventHandlers; } } }
[/codesyntax]
Da in Eclipse das Android Development Tool nicht mehr weiterentwickelt wird gibt es ein paar Probleme.
Ich möchte wenigstens das Debugging in Eclipse nutzen.
Wie Funktioniert das.
4. Wenn die App gestartet ist prüfen ob es einen Debugbaren Prozess gibt
5. Wenn es mehr als einen Prozess gibt müssen wir herausfinden welcher unser Prozess ist.
Hierfür gibt es das Command „adb shell ps $FILTER“ mein Filter ist „hecreator.manga“ wobei meine App ID diese ist „eu.thecreator.manga“
Wichtig es sind die letzten 15 Zeichen von eurem App Namen
6. jetzt müssen wir noch den Port freischalten mit „adb forward tcp:21407 jdwp:XXXX“ bei mir ist es gerade 21731
7. In Eclipse nun einfach noch verbinden gegen den Port 21407
Wir haben folgende 2 Mongo Elemente mit internen Arrays „posts“
[codesyntax lang=“glsl“]
{ "_id" : ObjectId("56d34d6f4f6634a340b8da81"), "good" : 478, "bad" : 108, "extId" : "/ASD", "id" : NumberLong(746), "posts" : [{ "order" : 0, "time" : "18:53", "text" : "Ich hab Block1", "leftSide" : true }, { "order" : 1, "time" : null, "text" : "Ich suche Block 2", "leftSide" : false }] } /* 1 */ { "_id" : ObjectId("56d34d9f4f6634a340b8ddc7"), "good" : 836, "bad" : 303, "extId" : "/chat239782", "id" : NumberLong(1482), "posts" : [{ "order" : 0, "time" : "23:21", "text" : "wirklich ein Highlight.", "leftSide" : true }] }
[/codesyntax]
Wenn wir jetzt innerhalb der Elemente suchen wollen brauchen wir etwas um in den Arrays zu suchen.
„$elemMatch “ übernimmt dieser Rolle:
find({ „posts“ : { „$elemMatch“ : { „text“ : /.*Highlight.*/ } } })
IF you looking at the current version of the „ObservableList“ there is a „size()“ method but no binding for it.
If you want to bind the current count of selections to a Label you need listener 🙁
A other way is this:
Bei der Rotation habe ich auf die Verwendung von Raycast verzichtet und stattdessen die Mausbewegung selbst abgefragt.
Nach nun mehr 3 Wochen des Testens und Code Umschreibens habe ich mich entschieden „SmartBody“ nicht für meine Engine zu verwenden.
Warum? Weiterlesen
Heute habe ich mit dem Verschieben von Objekten im 3D Raum auseinander gesetzt.
Ziel ist es mittels Pfeilen ein Objekt auf allen 3 Achsen zu verschieben. Weiterlesen
So jetzt habe ich einen Account auch auf Github: https://github.com/Scavenger156
Dort findet ihr meine JavaFx-Arbeiten.