Plugin-Erstellung/Java/AssetBundle Klasse

Aus Rising World Wiki



AssetBundle Klasse stellt ein in Unity erstelltes Asset-Bündel dar. Ein AssetBundle ist eine Sammlung mehrerer Assets, zum Beispiel Texturen, Sound-Assets, Models, Shader usw. Es ist außerdem möglich, Prefabs mit nahezu beliebigen Unity-Komponenten zu speichern (zum Beispiel Partikeleffekte, Lichter, Physikkomponenten). Werden Materialien oder eigene Shader verwendet, muss sichergestellt sein, dass diese HDRP-kompatibel sind.
Die AssetBundle Klasse erbt von Asset und wird innerhalb der Java Plugin-API verwendet, um eigene Unity-Asset-Bündel in Plugins zu laden.
Dieser Artikel dokumentiert einige wichtige Methoden der AssetBundle Klasse und zeigt anhand ausgewählter Java-Beispiele, wie diese zu verwenden sind. Hier sind nicht alle Methoden aufgeführt. Die vollständige API-Dokumentation mit allen Methoden, Feldern und Konstruktoren ist im JavaDoc zu finden.
Für Plugin-Programmierung und Unity-Bündel ist es ratsam, die gleiche Unity 6000.0.60 Version wie das Spiel zu verwenden.


Dokumentation

Die AssetBundle Klasse ist unter JavaDoc: Class AssetBundle zu finden.
Die vollständige API-Dokumentation mit allen Paketen, Klassen, Methoden, Feldern und Konstruktoren ist im JavaDoc und im Assets Paket zu finden.

Java Paket

In der Java Plugin-API bezeichnet der Begriff "Package" (Paket) eine Gruppierung von zusammengehörigen Klassen, Interfaces und anderen Paketen. Die AssetBundle Klasse befindet sich im Package net.risingworld.api.assets.

Oberklasse

Die Klasse AssetBundle erbt von der abstrakten Klasse Asset, welche die Basisklasse für sämtliche Asset-Referenzen in der Plugin-API darstellt. Über die Oberklasse stehen allen AssetBundles die folgenden geerbten Methoden zur Verfügung: dispose(), equals(), getChecksum(), getDependency(), getExtension(), getHandle(), getPath(), getSource(), getType(), hashCode() und isDisposed().

Geerbte Nested Klassen

Eine Nested Class (geschachtelte Klasse) ist eine Klasse, die innerhalb einer anderen Klasse definiert wird. Aus der Oberklasse Asset werden die folgenden geschachtelte Klassen (Nested Classes) an AssetBundle vererbt:

  • Asset.Source – Enum-Klasse, die die Quelle eines Assets beschreibt. Die möglichen Werte sind:
    • Game – Asset is loaded from a built-in game file
    • Plugin – Asset is loaded from a plugin
    • PluginAssetBundle – Asset is loaded from a plugin asset bundle
    • Custom – Asset is loaded from a custom source
    • Internal – Asset is internal
  • Asset.Type – Enum-Klasse, die den Typ eines Assets beschreibt (zum Beispiel SOUND, TEXTURE, MODEL, MATERIAL, MESH, PREFAB, STYLE_SHEET).

Geerbtes Feld

Aus der Oberklasse Asset wird das folgende Feld an AssetBundle vererbt:

Hinweise zu AssetBundles

Beim Erstellen eines AssetBundles in Unity ist zu beachten, dass Shader oder Effekte, die mit dem VFX Graph erstellt wurden, bei einem Unity-Versionswechsel des Spiels inkompatibel werden können. Dies geschieht in der Regel nur bei größeren Versionsupdates und ist vom verwendeten Unity-Setup abhängig. Ob ein Unity-Versionswechsel stattgefunden hat, ist dem Changelog zu entnehmen.
Weitere Informationen zur Erstellung von AssetBundles sind im Forum-Thread "Create Asset Bundles" zu finden.

Methoden

Dieser Abschnitt listet alle direkt in der Klasse AssetBundle definierten Methoden auf. Geerbte Methoden aus Asset und Object sind nicht enthalten; eine vollständige Liste steht im JavaDoc.

Statische Methoden

Instanzmethoden

  • String[ AssetBundle.getAllAssetNames()] – Liefert ein Array mit allen Asset-Namen (inklusive ihrer Pfade) innerhalb dieses AssetBundles.
  • String AssetBundle.loadTextAsset(String assetName) – Lädt ein Text-Asset aus dem AssetBundle und gibt es als String zurück.
  • byte[ AssetBundle.loadTextAssetBytes(String assetName)] – Lädt ein Text-Asset aus dem AssetBundle und gibt es als Byte-Array zurück.

Beispiel loadFromFile

Lädt das AssetBundle "examplebundle.bundle" aus dem Plugin-Ordner. Die Methode loadFromFile erwartet einen absoluten Pfad zur AssetBundle-Datei auf der Festplatte.

AssetBundle bundle = AssetBundle.loadFromFile(getPath() + "/examplebundle.bundle");

//Etwas mit dem AssetBundle machen

Die Methode loadFromFile() mit Codeschnipsel ist unter javadoc RW: Class AssetBundle - loadFromFile(String) zu finden.

Wichtige Methoden in diesem Beispiel

  • AssetBundle.loadFromFile() – Lädt ein AssetBundle von einer Datei auf der Festplatte. Der Pfad wird absolut angegeben; getPath() liefert den Pfad zum Plugin-Ordner.
  • Plugin.getPath() – Liefert den Pfad zum Plugin-Ordner, in der Regel als Basispfad für eigene Asset-Dateien verwendet.

Beispiel getAllAssetNames

Erstellt ein AssetBundle, listet alle enthaltenen Asset-Namen auf und gibt sie im Konsolen-Log aus. Das Codebeispiel zeigt zusätzlich, wie sich alle Asset-Namen als Java-Array zurückgeben und durchlaufen lassen.

AssetBundle bundle = AssetBundle.loadFromFile(getPath() + "/examplebundle.bundle");

//Alle Asset-Namen aus dem Bundle holen
String[] names = bundle.getAllAssetNames();

for(String name : names){
    System.out.println(name);
}

Die Methode getAllAssetNames() mit Codeschnipsel ist unter javadoc RW: Class AssetBundle - getAllAssetNames() zu finden.

Wichtige Methoden in diesem Beispiel

Siehe auch

API Dokumentation

Forum

Kategorien

Tutorial Kategorien
Plugin-API(1 K, 10 S)
Tutorial(3 S)
Plugin-Erstellung
Java(2 K, 6 S)
Unity(5 S)