Plugin-Erstellung/Java/SoundAsset Klasse
SoundAsset Klasse
stellt eine benutzerdefinierte Audiodatei dar. Dies kann entweder ein Soundeffekt oder ein Musiktitel sein.
Unterstützte Dateiformate: ogg, mp2, mp3, midi/mid, wav, flac.
Die SoundAsset Klasse erbt von Asset und wird innerhalb der Java Plugin-API verwendet,
um eigene Audio-Inhalte in Plugins abzuspielen.
Dieser Artikel dokumentiert einige wichtige Methoden der SoundAsset 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.
Dokumentation
Die Klasse SoundAsset ist unter JavaDoc: Class SoundAsset zu finden.
Die vollständige API-Dokumentation mit allen Paketen, Klassen, Methoden, Feldern und Konstruktoren ist im JavaDoc 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 SoundAsset Klasse befindet sich im Package net.risingworld.api.assets.
Oberklasse
Die Klasse SoundAsset 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 SoundAssets die folgenden geerbten Methoden zur Verfügung:
dispose(), equals(), getChecksum(), getDependency(), getExtension(), getHandle(), getPath(), getSource(), getType(), hashCode() und isDisposed().
Geerbte Nested Classes
Aus der Oberklasse Asset werden die folgenden Nested Classes an SoundAsset 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 SoundAsset vererbt:
DEFAULT_EXTENSION– die Standard-Dateiendung für Asset-Dateien ("asset").
Methoden
Dieser Abschnitt listet alle direkt in der Klasse SoundAsset definierten Methoden auf. Geerbte Methoden aus Asset und Object sind nicht enthalten; eine vollständige Liste steht im JavaDoc.
Statische Methoden
SoundAsset.load(byte[ data)]– Erzeugt ein neues SoundAsset aus einem Byte-Array mit rohen Audiodaten.SoundAsset.loadFromAssetBundle(AssetBundle bundle, String path)– Lädt ein SoundAsset aus einem AssetBundle (Unity-Container).SoundAsset.loadFromFile(String file)– Erzeugt ein neues SoundAsset, das auf eine Audiodatei auf der Festplatte verweist.SoundAsset.loadFromFile(String file, boolean streamed)– Erzeugt ein neues SoundAsset, das auf eine Audiodatei auf der Festplatte verweist. Über den Parameterstreamedkann gewählt werden, ob die Datei gestreamt (geringerer Speicherverbrauch, höhere CPU-Last) oder vollständig in den Speicher geladen werden soll. Standardmäßig ist Streaming deaktiviert; es empfiehlt sich nur bei großen Dateien wie Musikstücken.SoundAsset.loadFromPlugin(Plugin plugin, String resource)– Erzeugt ein neues SoundAsset und lädt die Audiodatei aus dem JAR-Archiv des angegebenen Plugins.SoundAsset.loadFromURL(String url)– Lädt einen Audiostream von einer URL. Damit kann zum Beispiel ein Online-Radiostream eingebunden werden.
Instanzmethoden
boolean SoundAsset.isStreamed()– Gibt zurück, ob das SoundAsset im Streaming-Modus geladen wurde (true) oder vollständig in den Speicher (false).
Beispiel loadFromFile
Lädt die Audiodatei "explosion.ogg" aus dem Unterordner "assets" im Plugin-Verzeichnis. Die Methode loadFromFile erwartet einen absoluten Pfad zur Datei auf der Festplatte und eignet sich besonders, wenn die Audiodatei außerhalb der JAR-Datei liegt.
SoundAsset sound = SoundAsset.loadFromFile(getPath() + "/assets/explosion.ogg");
//Etwas mit dem SoundAsset machen, zum Beispiel abspielenDie Methode loadFromFile() mit Codeschnipsel ist unter javadoc RW: Class SoundAsset - loadFromFile(String) zu finden.
Wichtige Methoden in diesem Beispiel
SoundAsset.loadFromFile()– Erzeugt ein neues SoundAsset, das auf eine Audiodatei auf der Festplatte verweist. Der Pfad wird absolut angegeben;getPath()liefert den Pfad zum Plugin-Ordner.Plugin.getPath()– Liefert den Pfad zum Plugin-Ordner, in dem Regel als Basispfad für eigene Audio- und Asset-Dateien verwendet.
Beispiel Sound nach Beitritt
Erstellt ein SoundAsset und spielt es für jeden Spieler nach dem Beitritt ab. Das SoundAsset wird einmalig beim Laden des Plugins erzeugt und bei jedem Spieler-Spawn-Event wiederverwendet, was Speicher und Ladezeit spart.
import net.risingworld.api.Plugin;
import net.risingworld.api.events.EventMethod;
import net.risingworld.api.events.Listener;
import net.risingworld.api.assets.SoundAsset;
import net.risingworld.api.objects.Player;
public class MyPlugin extends Plugin implements Listener
{
//Unser wiederverwendbares SoundAsset
public SoundAsset welcomeSound;
@Override
public void onEnable()
{
//SoundAsset einmal erstellen und für jeden Spieler wiederverwenden (nicht zwingend erforderlich)
welcomeSound = SoundAsset.loadFromFile(getPath() + "/welcome.ogg");
//Nicht vergessen, den Event-Listener zu registrieren
registerEventListener(this);
}
@Override
public void onDisable()
{
//...
}
@EventMethod
public void onPlayerSpawn(PlayerSpawnEvent event)
{
Player player = event.getPlayer();
player.playSound(welcomeSound, player.getPosition());
}
}Die Methode loadFromFile() mit Codeschnipsel ist unter javadoc RW: Class SoundAsset - loadFromFile(String) zu finden.
Wichtige Methoden in diesem Beispiel
SoundAsset.loadFromFile()– Erzeugt ein neues SoundAsset, das auf eine Audiodatei auf der Festplatte verweist.Plugin.registerEventListener()– Registriert einen Event-Listener, damit die mit@EventMethodannotierten Methoden aufgerufen werden, sobald ein entsprechendes Ereignis eintritt.Player.playSound()– Spielt ein SoundAsset für den Spieler an einer bestimmten Weltposition ab.
Siehe auch
- Erstellung eines JAVA Plugin-Projekts für Rising World in Eclipse
- Wiki Kategorie: "Java"
- Wiki Kategorie: "Plugin-API"
- Plugin Klasse
- Wiki Kategorie: "Unity"
API Dokumentation
- JavaDoc RW: API Package summary
- JavaDoc RW: Package net.risingworld.api.assets
- JavaDoc RW: Class SoundAsset
- JavaDoc RW: Class Asset (Oberklasse)
- JavaDoc RW: Enum Class Asset.Source
Forum
- Rising World Forum: Create Asset Bundles
- Rising World Forum: Getting started
- Rising World Forum: Create a Plugin
- Rising World Forum: Code Schnipsel
Kategorien
| Tutorial Kategorien
Tutorial (3 S) |
Plugin-Erstellung
|