Laden eines PNG-Bildes als Textur zur Laufzeit in Unity3d

8

Ich verwende eine Reihe von PNG-Bildern als Sprites, um Animationen in einer Ebene für eine Augmented-Reality-Anwendung in Unity zu erstellen. Die PNG-Bilder werden als Texturen geladen, und die Texturen werden auf eine Ebene angewendet, um eine Animationssequenz zu erstellen, die mit einem Augmented-Reality-Ziel verfolgt.

Hier ist das Skript, das an die Ebene angehängt ist und die Animationssequenz steuert.

Datei PNGSequence.js

%Vor%

Texturen werden per Drag & Drop von PNG-Dateien im Editor zugewiesen und alles funktioniert gut, wenn ich die Anzahl der PNGs limitiere. Mit steigender Texturanzahl erhalte ich auf Android keine Speicherfehler mehr.

Ich möchte die PNG-Dateien zur Laufzeit als Texturen laden, um den Zahlenspeicher zu begrenzen, aber ich habe Probleme, den Code zum Laufen zu bringen.

Ich habe versucht, LoadImage.

%Vor%

Ich habe auch versucht, das Bild direkt als Textur zu laden (da dies mit dem Editor zu funktionieren scheint).

%Vor%

Kein Glück mit beiden. Irgendwelche Vorschläge, wie man das erreicht?

BEARBEITET

Dank des von Xerosigma bereitgestellten Links konnte ich das funktionieren lassen. Ich hatte ein Problem mit Pfaden (und ich vermute mit der Textur-Anforderung beim Laden).

Neben dem Laden der PNG-Texturen habe ich auch festgestellt, dass Unity bei Texturen keine Speicherverwaltung durchführt. Um Speicher wiederherzustellen, müssen Texturen nach der Verwendung manuell entfernt werden.

Texturen werden alle in einem "Resources" -Ordner abgelegt. Der Ressourcenordner kann an einer beliebigen Stelle in der Assets-Hierarchie platziert werden - ich habe mehrere individuelle Ordner für jede meiner PNG-Sequenzen erstellt, um sie zu organisieren, und dann einen Ressourcenordner für die PNGs hinzugefügt.

Texturen werden über den Editor zugewiesen, indem eine Texturanzahl (z. B. 100), ein Basisname (z. B. "texture_") und eine Nullfüllung angegeben werden.

Datei PNGSequenceRunTime.js

%Vor%     
Jason George 04.04.2013, 20:16
quelle

2 Antworten

10

In C #:

%Vor%

Ich hoffe, es hilft. Sie sollten es in JS konvertieren können, kein Problem. Sehen Sie sich einfach die Unity-Dokumentation an.

Ссылка

    
Nestor Ledon 04.04.2013, 21:57
quelle
1

Ich habe das Gleiche erreicht, indem ich eine Sequenz von .png Bildern (mit einem Alpha-Kanal) in einen Ordner Resources / Sequence1 im Hauptordner Assets gelegt habe. Die Ausgabe ist ein nahtloser Film, der mit Transparenz genau entsprechend den Alphakanälen der Bilder spielt.

Dieser Code wird auf eine Ebene angewendet, der ein neues Standardmaterial mit transparentem / diffusem Shader zugewiesen ist. Dieser Shader unterstützt PNG-Bilder mit Alpha als Transparenz. Sie müssen nur den Namen des Ordners, der die Bilder enthält, der Variablen framespath geben.

%Vor%     
user3004240 18.11.2013 12:57
quelle

Tags und Links