Plugin API - Wehre schön, wenn & Fehlerberichte - It would be nice, if & bug reports

A new update is now available, introducing a lot of new content!
Latest hotfix: 0.7.5.2 (2024-09-10)
  • Thema AssetBundle und 3D Modelle

    Ja damit fange ich gerade an, hatte nur immer diesen Beitrag genommen, für Fragen an Red, mehr oder Weniger

    :thinking:Der Themaen Name Passt dan nicht mehr ganz


    Dafür dachte ich an die Code-Schnipsel Seite, da wollte ich alles rein machen was Funktioniert und damit die mal an einem Ort sind


    Und daraus dann Gute Beispiele machen, ich will die [Beispiel Plugin] weiter ausbauen, dass man sich an denen Orientieren kann


    Eine herausforderung war für mich auch das Bedienen des Unity-Editors:dizzy:
    Wenn ich das mit den Assets sauber hin bekomme Wollte ich mal ein Video dazu machen, um die Unsicherheit zu nehmen was Falsschen zu Klicken.

    Also für AssetBundel ist ein Beispielcode geplant(wenn's bei mir Klappt) mit einblich in den Unity-Editor8)

  • noci wenn es um Unity-Editor geht dann kannst auch mich fragen. Vielleicht kann ich weiter helfen.

    Ich programmiere seit c.a. 5 Jahren mit (und für) Unity-Editor.


    Und bedenke, dass rising-world .Bundle ist NICHT gleich mit Unity AssetBundle, falls Du andere Tools / Scripte benutzt.

    Ich habe mal ein "AssetBundle Viewer" mit Unity programmiert und da ist es mir aufgefallen

    Es wird alles gut :) früher oder später :D meistens später :nerd: ... ich wandle Kaffee in Quelltext um.

    Und besucht die Rising World Wiki

  • Ich programmiere seit c.a. 5 Jahren mit (und für) Unity-Editor

    Ja, das doch Super
    Vieleicht könntest du eine Bilder Sammlung oder Video machen:
    - Eigenes Objeckt (OBJ,FBX) importieren, was muss man beschten (FBX Textur richtig Importieren:Daus Blender)

    - Textur erstellen, welche Maps brauche ich, was kann man einstellen damit es "besser geht", Normal, Emissive, was macht sin was nicht

    - Efeckte grundkurs, welche der 1000 Knöpfe muss ich wirklich Drücken:lol:


    Ich versuche gerade die Bündel zu Durchsuchen, dann könnte ich was zusammen bauen, indem mann das Bündel auswählt und daraus dann ein Modell oder Efeckt auswählt und Platzieren kann.

    Ja RW hat das durchsuchen nicht Öffendlich.


    Dann müsstest du nur die Bündel in einen Ordner schmeißen und sie währen Verfügbar;)

  • Die eigenen Objekte habe ich in der Unity geliebt. Meine Welt war viel bunter, Sonnenschirme, Hunde, Katzen, Pflanzen, all das hat meine Welt bereichert.

    Allerdings bin ich auf frei erhältliche Modelle angewiesen.

  • Nabend red51 ,


    Ich versuche gerade das Lade Bild zu ändern:


    Aber scheinbar erreiche ich das garnicht, ich habe auch versucht es Unichtbar zu machen

    Habe ich den Richtiegen Phat erwischt?

    Fehlt noch etwas bei setHG() oder ist zuviel, ich wollte ein Vollbild mache^^

    Oder ist das vom Client fest?


    Als nächstes habe ich das Bild als Hintergrund im loadingscreen eingesetzt und dort wird es normal angezeigt:thumbup:



    Allerdings bin ich auf frei erhältliche Modelle angewiesen.

    Ja soweit ich das gelesen habe, kommt mann dann nicht um die Unity Bündel Geschichte drum herum.

    Offenbar gibt es nur für OBJ-Datein eine Möglichkeit zur Laufzeit hinzuzufügen.

    Das heist viele sachen die es als FBX gibt müssen dan mit dem Bündel hinzugefügt/eingefügt werden.


    Ja dann kommt zwar ein Schritt hinzu aber wenn es dann bald eine Gut bebilderte Anleitung gibt, wird es Verständlicher ^^

  • Es scheint erstmal so als ob mann Derzeit Wissen muss was im *.bundle enthalten ist
    Ich habe zwar ein GetAllAssetNames gefunden, aber ich finde keinen Zugang dazu

    Ja, der Pfad zum Asset im Bundle muss bekannt sein ;)

    Eine Funktion zum Auslesen aller Asset Namen können wir aber theoretisch anbieten ^^


    Ist der schon enthalten und wie kann ich derzeit eine einfache OBJ und Texture Laden?

    Du kannst ein PrefabAsset auch direkt von der Festplatte laden (PrefabAsset.loadFromFile()). Dort kann direkt ein .obj oder eine .fbx angegeben werden.


    Wenn du eine .fbx Datei mit eingebetteten Texturen hast, dann kannst du auch alles in eine .zip packen und diese zip dann laden.


    Für das Laden einzelner Modelle ist aber eigentlich das ModelAsset vorgesehen (i.V.m. einem Model Objekt). Leider hat es das aber nicht mehr ganz rein geschafft (wir haben die Priorität erstmal auf Prefabs gelegt, weil damit viel mehr möglich ist). Das werden wir aber voraussichtlich mit dem nächsten Update noch nachreichen. Derzeit kann die Model Klasse nur Modelle des Spiels laden.


    Und bedenke, dass rising-world .Bundle ist NICHT gleich mit Unity AssetBundle, falls Du andere Tools / Scripte benutzt.

    Tatsächlich haben normale Asset Bundles das Problem, dass sie plattformabhängig sind (zumindest sobald sie Materials, Shader oder VFX Effekte o.ä. enthalten) :/ Mit dem mitgelieferten SDK von uns kann man hingegen ein plattformunabhängiges Asset Bundle builden (welches dann sowohl unter Windows als auch Linux und Mac funktioniert). Unity kann das allerdings nicht mehr laden, da die Daten darin natürlich von einem regulären Asset Bundle abweichen^^


    Die Plugin API unterstützt übrigens aber auch das Laden von "klassischen" Asset Bundles (was aber aufgrund der fehlenden Kompatibilität zw. Windows, Linux und Mac nicht empfehlenswert ist) ^^


    Aber scheinbar erreiche ich das garnicht, ich habe auch versucht es Unichtbar zu machen

    Habe ich den Richtiegen Phat erwischt?

    Fehlt noch etwas bei setHG() oder ist zuviel, ich wollte ein Vollbild mache ^^

    Es reicht grundsätzlich, nur style.backgroundImage zu setzen ;) Der Pfad ist aber leider nicht korrekt: Du steuerst ein kleines Bild an, welches momentan vom Spiel ausgeblendet wird (das ist für spätere Zwecke vorgesehen) :saint:


    Das eigentliche Hintergrundbild ist direkt der "loadingLayer" zugewiesen, d.h. darauf musst du das "backgroundImage" überschreiben^^

  • Es reicht grundsätzlich, nur style.backgroundImage zu setzen ;)

    Ja:Dgewust wie klappt's auch:thumbup:


    Du kannst ein PrefabAsset auch direkt von der Festplatte laden (PrefabAsset.loadFromFile()). Dort kann direkt ein .obj oder eine .fbx angegeben werden.

    Also das habe ich auch mal Probiert,das OBJ kommt auf jeden Fall im Spiel an^^


    Eine Funktion zum Auslesen aller Asset Namen können wir aber theoretisch anbieten ^^

    Könnte diese Funktion auch die Typen mit angeben oder würde sie nur die Prefab's angeben?

    Würde es gleich eine Komplette liste mit Unterordnern sein oder wie ein Verzeichnis?


    Wehre es möglich den Mesh Render und sein Materials auszulesen, speziell die Base Map?
    Also setMaterial oder setMaterialParameter gibt es ja schon(Obwohl ich da noch keine Vorstellung von den Parametern habe), eine GET wehre schön, dann könnte das gefundene Prefab mit einem Bild für die Wiedererkennung angezeigt werden^^


    In den Prefab's sollte man kein Rigidbody benutzen, das verzieht die LocalePosition und ist nicht Muliplayer Tauglich, eine Syncrone Physik kommt aber noch?:D
    Oder fehlt nur die getWorldPosition()?

  • Ich hätte noch gerne noch Analog zum PlayerKeyEvent einen PlayerMouseEvent

    Ich brauche das zum Platzieren vom GameObject, damit das Handling gleich bleibt
    Ist da eine Place-Funktion geplant, die Rotation, Scalierung und Raster wie im Spiel zur Verfügen Stellt:Ddie wehre mir Natürlich Lieber:saint:

  • Hi red51 mMir ist aufgefallen das player.disableClientsideKeys(Key.Escape); nicht klappt, laut dem Log Disable 1 clientside keys [60] from plugin ToolsAPI (1) gibt es auch keine Probleme
    Kannst du da noch mal nachschauen?

  • Gibt es hier noch etwas zu beachten um das Material zu setzen?

    Der Pfad bei setMaterial() ist so leider nicht korrekt, denn die Funktion sieht vor, dass der Pfad zum Child-Objekt angegeben wird. Bei .obj oder .fbx Dateien ist das leider etwas schwer zu bestimmen... in erster Linie ist diese Funktion auf Prefabs ausgelegt, die in Unity erstellt wurden (wo du den Child-Elementen dann direkt einen passenden Namen geben kannst).


    Für Modelle ist später eigentlich dann das Model Objekt die bessere Wahl - dort wirst du auch direkt ein Material zuweisen können ;)


    Könnte diese Funktion auch die Typen mit angeben oder würde sie nur die Prefab's angeben?

    Würde es gleich eine Komplette liste mit Unterordnern sein oder wie ein Verzeichnis?

    Die Typen anzugeben ist leider etwas komplizierter, da dazu sämtliche Assets einmal in den Speicher geladen werden müssen. Allerdings ist anhand des Datennamens der Typ oft schon erahnbar (zB ist ein Prefab i.d.R. als ".prefab" gespeichert, ein Material als ".mat" usw).


    Die Funktion würde den jeweiligen vollen Assetpfad zurückgeben, also der Pfad, mit dem man das Asset aus dem Bundle laden würde.


    Wehre es möglich den Mesh Render und sein Materials auszulesen, speziell die Base Map?

    Nein, derzeit leider nicht, da das fertige Modell erst beim Client existiert und der Server keinen Zugriff darauf hat. Dazu kommt das Problem, dass Meshes oder Texturen nicht zwangsläufig "readable" sind, d.h. die eigentlichen Mesh- oder Texturdaten können nicht immer ausgelesen werden.


    In den Prefab's sollte man kein Rigidbody benutzen, das verzieht die LocalePosition und ist nicht Muliplayer Tauglich, eine Syncrone Physik kommt aber noch? :D
    Oder fehlt nur die getWorldPosition()?

    Sowas gibt es leider nicht out-of-the-box... wenn wir sowas vom Spiel aus anbieten wollen, müssten wir uns einmal überlegen, wie man das am besten in die API integrieren kann :thinking: Was wir sonst einbauen könnten wäre eine "getWorldPosition()" Funktion, die allerdings dann mit einem Callback arbeiten muss (da die Position erst vom Client ausgelesen und dann zum Server geschickt werden muss). Dann könnte man mit der API zumindest seine eigene Synchronisierung umsetzen^^


    Ich hätte noch gerne noch Analog zum PlayerKeyEvent einen PlayerMouseEvent

    Jap, das ist wahrscheinlich gar nicht so verkehrt, also zumindest für Maustasten (dann quasi ein PlayerMouseButtonEvent oder so) ^^


    Hi red51 mMir ist aufgefallen das player.disableClientsideKeys(Key.Escape); nicht klappt, laut dem Log Disable 1 clientside keys [60] from plugin ToolsAPI (1) gibt es auch keine Probleme

    Hmm... das kann ich bei mir leider nicht reproduzieren :thinking: Mit "player.disableClientsideKeys(Key.Escape);" hat die ESC-Taste keine Funktion mehr (weder um Menüs zu schließen, noch um das Ingame-Menü aufzurufen). Was genau funktioniert denn bei dir in dem Fall nicht?

  • Dazu kommt das Problem, dass Meshes oder Texturen nicht zwangsläufig "readable" sind,

    Für Texturen benutze ich so eine kleine Funktion um die readable zu machen



    Ich brauche das zum Platzieren vom GameObject, damit das Handling gleich bleibt
    Ist da eine Place-Funktion geplant, die Rotation, Scalierung und Raster wie im Spiel zur Verfügen Stellt

    Eine Place-Funktion wäre schön damit alles genau so funktioniert und natürlich die Maus-Tasten (PlayerMouseButtonEvent)

    Es wird alles gut :) früher oder später :D meistens später :nerd: ... ich wandle Kaffee in Quelltext um.

    Und besucht die Rising World Wiki

    Edited once, last by Kryssi_79 ().

  • Für Modelle ist später eigentlich dann das Model Objekt die bessere Wahl - dort wirst du auch direkt ein Material zuweisen können ;)

    Oke, das Klingt gut🧘🏻‍♂️


    Allerdings ist anhand des Datennamens der Typ oft schon erahnbar

    :thumbup:das Reicht natürlich voll und ganz aus


    Nein, derzeit leider nicht, da das fertige Modell erst beim Client existiert und der Server keinen Zugriff darauf hat.

    Das währe erstmal nur für den Client selber(Ohne das zu Teilen als Poster oder so), an der Stelle wo ich das bräuchte, habe ich das Geladene PrefabAsset ... :thinking:
    Ich könnte da eine Temporäres Prefab erstellen, aber da wehren noch keine TextureAsset erst beim player.addGameObject ?


    Was wir sonst einbauen könnten wäre eine "getWorldPosition()" Funktion, die allerdings dann mit einem Callback arbeiten muss (da die Position erst vom Client ausgelesen und dann zum Server geschickt werden muss). Dann könnte man mit der API zumindest seine eigene Synchronisierung umsetzen^^

    Ja sollte ausreichen:Dich habe ein Würfel Mesh in die Handbekommen und da überkarm mich die Idee, einen Ingame Würfel zu machen :nerd:um gemeinsam zu Würfeln
    Dazu wehre auch eine getWorldRotation() nicht schlecht:thinking:damit könnte ich auch herausbekommen welche Zahl oben ist und die LockalRotation bei der Synkronisation anpassen


    dann quasi ein PlayerMouseButtonEvent oder so

    Ja^^gerne auch mit Registrieren(wenn es Sinn macht), interessant wehre da auch isPressd() und ein isDrag() oder vieleicht isHold() damit mann den Plazier Timer umsetzen kann


    Hmm... das kann ich bei mir leider nicht reproduzieren

    Ja:lol:das habe ich befürchtet


    Ich habe das Pfenomän Festgestellt das nur das aller erste disableClientsideKeys Funktioniert, die Liste scheint dann Fest zu sein, ich habe das auch nur mit einem Plugin getestet



    :wow:Server Update

    # If true, player world events (e.g. place or remove elements or terrain) will be tracked and logged

    Settings_LogWorldEvents=False:thinking:oder habe ich den erst jetzt wargenommen


    Ich benutze den player.raycast der ist ebenfalls seht Informativ:saint:zum Coden auf jeden fall gut das all die Infos drin sind, gerne auch noch einiege mehr^^(z.b. uidebugger [Layername] um die Phade zu Kopieren;))

    Nur für den Reguleren betrieb vieleicht auch ausschaltbar machen, vieleicht noch Settings_LogPlayerEvents, Settings_LogPluginEvents hier wehre auch eine 4. Farbe schön (Rot Fehler, Gelb Warnung, z.b. Türkis Plugin, Weiß Server) oder wenn man später noch die Plugin Ausgaben noch Färben könnte:D


    Es gibt ja immernoch das Problem mit dem Player Namen im Spiel

    Das sieht mir nach einem Rundungs/Konvertierungs Problem aus, in Java konnte ich das mit dem (int) (long)Long.parseLong lösen.

    Java
    private String seitenTextColor = "#ffffffff";
    public Integer getSeitenTextColor() {return (int) (long) Long.parseLong(seitenTextColor.replace("#", ""), 16); }

    Vieleicht ist auch nur untergergangen:saint:



    Texture2D duplicateTexture(Texture2D source)

    Sowas ist gut, beim Thema Texture2D, gibt es da auch etwas zum Mischen oder Überlagern per Maske?

  • Für Texturen benutze ich so eine kleine Funktion um die readable zu machen

    Texturen können zwar in der Tat von der GPU zurückgelesen werden, das funktioniert allerdings nur clientseitig, der Server hat diese Möglichkeit leider nicht (da headless) :(


    Eine Place-Funktion wäre schön damit alles genau so funktioniert und natürlich die Maus-Tasten (PlayerMouseButtonEvent)

    Man müsste sich mal überlegen, wie man so ein "Place-Verhalten" sauber in der API anbieten kann :thinking: Dazu machen wir uns mal Gedanken ;)

    Einem PlayerMouseButtonEvent steht aber natürlich nichts im Wege^^


    Das währe erstmal nur für den Client selber(Ohne das zu Teilen als Poster oder so), an der Stelle wo ich das bräuchte, habe ich das Geladene PrefabAsset ... :thinking:
    Ich könnte da eine Temporäres Prefab erstellen, aber da wehren noch keine TextureAsset erst beim player.addGameObject ?

    So ein rein clientseitiges Handling bringt leider ein paar Probleme mit sich... wenn eine Textur nur clientseitig vorhanden ist, man aber trotzdem eine Referenz in der API hat, dann wirft das jede Menge Fragen auf, wenn diese Referenz bspw. einem anderen Spieler zugewiesen wird. Bzw. die API GameObjects sind ja ohnehin nicht spielergebunden, d.h. dieselbe Referenz kann mehreren Spielern zugewiesen sein. Würde man nun nur clientseitig die Textur auslesen und irgendwo zuweisen, würde das bei anderen Spielern nicht wirklich funktionieren... so ein API Verhalten wäre sehr inkonsistent :/


    Einfacher und sinnvoller ist es bei einem Prefab eigentlich, die benötigten Texturen direkt beim Vorbereiten des Plugins (in Unity) mit ins AssetBundle zu packen - dann kann die Textur uneinschränkt geladen und in der API verwendet werden. Die AssetBundles können ja nicht nur Prefabs speichern, sondern auch Texturen, Meshes etc.


    Ja sollte ausreichen :D ich habe ein Würfel Mesh in die Handbekommen und da überkarm mich die Idee, einen Ingame Würfel zu machen :nerd: um gemeinsam zu Würfeln

    Wenn du nur einen Würfel haben möchtest, dann kannst du auch die Model Klasse verwenden - denn das ModelAsset unterstützt zumindest bereits das Laden eines Meshes aus dem Spiel. Ein paar generische Meshes (zB ein "Cube") sind dort auch direkt exposed:



    gerne auch mit Registrieren(wenn es Sinn macht)

    Wie meinst du das genau?


    interessant wehre da auch isPressd() und ein isDrag() oder vieleicht isHold() damit mann den Plazier Timer umsetzen kann

    Eine isPressed() Funktion würde das Event auf jeden Fall bekommen (d.h. das Event würde beim Drücken sowie Loslassen der Maus getriggert werden, ähnlich wie beim PlayerKeyEvent).


    Beim Draggen müssten wir uns mal Gedanken machen... vll wäre hier ein separates Event denkbar (PlayerMouseDragEvent o.ä) :thinking:


    Ich habe das Pfenomän Festgestellt das nur das aller erste disableClientsideKeys Funktioniert, die Liste scheint dann Fest zu sein, ich habe das auch nur mit einem Plugin getestet

    Oh, tatsächlich :wat: Offenbar wird nur der erste Key übernommen... das ist so nicht gewollt, das werden wir mit dem nächsten Update beheben :saint:


    Settings_LogWorldEvents=False :thinking: oder habe ich den erst jetzt wargenommen

    Das ist tatsächlich schon etwas länger drin :D


    Nur für den Reguleren betrieb vieleicht auch ausschaltbar machen, vieleicht noch Settings_LogPlayerEvents, Settings_LogPluginEvents hier wehre auch eine 4. Farbe schön (Rot Fehler, Gelb Warnung, z.b. Türkis Plugin, Weiß Server) oder wenn man später noch die Plugin Ausgaben noch Färben könnte

    Wie meinst du das genau?


    Was das Färben von Plugin-Ausgaben angeht, meinst du die Ausgaben in der Konsole?


    Das sieht mir nach einem Rundungs/Konvertierungs Problem aus, in Java konnte ich das mit dem (int) (long)Long.parseLong lösen.

    Ich weiß leider nicht genau, was du meinst? :monocle:


    Sowas ist gut, beim Thema Texture2D, gibt es da auch etwas zum Mischen oder Überlagern per Maske?

    Der obige Code von Kryssi_79 kopiert die Textur so wie sie ist von der Grafikkarte zurück zur CPU (aber wie gesagt, das funktioniert leider nur clientseitig, d.h. nicht serverseitig, wo die API ausgeführt wird - die API kann an diese Daten also nicht so einfach rankommen). Um eine Textur in ihrem Aussehen zu ändern, muss sie entweder explizit mit einem bestimmten Shader gerendert werden (das stößt in Unitys HDRP aber auf ein paar Probleme und Einschränkungen), oder aber du musst die Pixeldaten manuell überschreiben.


    Wenn Bedarf dazu ist, könnten wir in der API grundsätzlich auch die Möglichkeit bieten, Texturen prozedural zu erstellen - ähnlich wie beim MeshAsset. Dann könntest du prinzipiell jedem Pixel einen eigenen Farbwert zuweisen.

  • Einfacher und sinnvoller ist es bei einem Prefab eigentlich, die benötigten Texturen direkt beim Vorbereiten des Plugins (in Unity) mit ins AssetBundle zu packen

    Ja, der Gedanke karm mir auch schon, einfach ein Bild für die Vorschau mit rein zu Packen:D


    gerne auch mit Registrieren(wenn es Sinn macht)

    Ich dachte da an registerMouseButton(Links,Rechts,Mitte,Rad) ähnlich wie bei player.registerKeys zum aun und aus schalten


    Wie meinst du das genau?
    Was das Färben von Plugin-Ausgaben angeht, meinst du die Ausgaben in der Konsole?

    Ja die Ausgabe in der Konsole, aber warscheinlich auch eher unwichtig, wenn man etwas sucht ist ein Editor für die Log eh besser und da gibt ja den [Java] eintrag


    (int) (long)Long.parseLong

    Ich hatte für die Konvertierung der Farbe vom Hex:FFFF FFFF = DEC:4 294 967 295 Probleme weil der Integer ja "nur" bis +2 147 483 647 geht, aber über den umweg das aus einem Long zu hole, den dan zu einem Integer machen und dann kann ich das erst richtig mit ColorRGBA(int rgba)

  • Ich dachte da an registerMouseButton(Links,Rechts,Mitte,Rad) ähnlich wie bei player.registerKeys zum aun und aus schalten

    Würde es denn ggf. reichen, nur eine setListenForMouseInput(); Funktion zu haben, um Maus-Input generell ein- und auszuschalten? Es gibt ja nur wenige Maustasten, sodass ich nicht weiß, ob wirklich einzelne Tasten registriert werden müssten, oder was meinst du? ^^


    Ich hatte für die Konvertierung der Farbe vom Hex:FFFF FFFF = DEC:4 294 967 295 Probleme weil der Integer ja "nur" bis +2 147 483 647 geht, aber über den umweg das aus einem Long zu hole, den dan zu einem Integer machen und dann kann ich das erst richtig mit ColorRGBA(int rgba)

    *Eigentlich* sollte das kein Problem darstellen, da ein Integer trotzdem 4.294.967.296 verschiedene Werte repräsentieren kann. Da Java leider nur vorzeichenbehaftete Datentypen kennt, geht der Bereich dort halt von -2.147.483.648 bis +2.147.483.647, was aber normalerweise kein Problem darstellen sollte (also zumindest bei den Funktionen des Spiels, welche einen int rgba Wert akzeptieren - aus 0xFFFFFFFF wird dann eben -1) ;)

    Oder bist du auf eine Funktion in der API gestoßen, die damit nicht korrekt umgehen kann?

  • Es gibt ja nur wenige Maustasten, sodass ich nicht weiß,ob wirklich einzelne Tasten registriert werden müssten

    Ja, das war mir nicht Klar wie es im Hintergrund genau Läuft
    :Dwarscheinlich war ich noch verwirrt wegen dem disalbeKey, ob ich nicht was zum registrieren braue
    Klar lieber so einfach wie möglich^^



    Oder bist du auf eine Funktion in der API gestoßen, die damit nicht korrekt umgehen kann?

    Nein, alles gut. bei mir ging es um das Laden aus einer Config.

  • Hi, red51


    Ich weiß nicht ob schon gemeldet wurde Server.getAllAreas gibt ein Arry mit NULL zurück:thinking:

    Wie kann ich herausbekommen welche GameTexturen wo sind? Also für loadFromGame und mir gehts um die ganzen Icons im Baumenü(Linke Seite) und die vom Radialmenu bei [C]:saint:

    Also die Prüfung ob Taste Gedrückt ist bekomme ich hin, aber wie kann ich den Calback für den Spieler Schlißen wenn ich C Losllasse?


    Wehre es möglich bei showContextMenu, showRadialMenu, showMessageBox und vieleicht auch die anderen MessageBoxen, den Abbruch Registrieren? Also wenn das Menü zu geht weil mann daneben Klickt(außer Radial) oder mit ESC

    Ich habe vor ein Löschne zu bestätiegen nur bekomme ich keinen Event bei den Beiden Aktionen||


    Bei World.getDisabledNpcs() kommt ein NULL zurück.

  • Ich weiß nicht ob schon gemeldet wurde Server.getAllAreas gibt ein Arry mit NULL zurück :thinking:

    Hmm... das konnte ich bei mir jetzt leider nicht reproduzieren :thinking: Auch wenn keine Areas vorhanden sind sollte diese Funktion eigentlich niemals null zurückgeben.


    Wie kann ich herausbekommen welche GameTexturen wo sind? Also für loadFromGame und mir gehts um die ganzen Icons im Baumenü(Linke Seite) und die vom Radialmenu bei [C] :saint:

    Du könntest das Asset Bundle vom Spiel öffnen (Unity bietet direkt einen Asset Bundle Browser als Package für den Editor). Die UI Texturen liegen überwiegend im "interface.bin" Asset Bundle im Spielverzeichnis unter Data/StreamingAssets. Die Icons für das Baumenü liegen überwiegend in "interface/icons/building" ;)


    Ansonsten ein anderer Trick: Mit dem nächsten Update kommt ja die getAllAssetNames() Funktion für Asset Bundles rein. Ein schlauer Fuchs könnte jetzt das Asset Bundle vom Spiel über die API laden und mit dieser Funktion alle Pfade auslesen :D


    Also die Prüfung ob Taste Gedrückt ist bekomme ich hin, aber wie kann ich den Calback für den Spieler Schlißen wenn ich C Losllasse?

    Du meinst das Radial-Menü? Wahrscheinlich wäre da eine player.hideRadialMenu() Methode sinnvoll (womit das aktuell geöffnete Radial-Menü geschlossen wird)... ich packe das mal auf die Liste fürs nächste Update ;)


    Wehre es möglich bei showContextMenu, showRadialMenu, showMessageBox und vieleicht auch die anderen MessageBoxen, den Abbruch Registrieren? Also wenn das Menü zu geht weil mann daneben Klickt(außer Radial) oder mit ESC

    Ja, das wäre sinnvoll. Also zumindest dass das Callback dann trotzdem aufgerufen wird (dann als Parameter aber zB -1 übergeben wird). Ich packe das mal auf unsere Liste, mal sehen ob wir das fürs nächste Update noch reinbekommene ^^


    Bei World.getDisabledNpcs() kommt ein NULL zurück.

    Das ist zumindest dann "normal", wenn keine Npcs deaktiviert wurden. Ich habe aber festgestellt, dass diese Funktion zu einem Crash führt, wenn es deaktivierte Npcs gibt :wat: Das werden wir mit dem nächsten Update beheben ;)

Participate now!

Don’t have an account yet? Create a new account now and be part of our community!