2017-10-24 5 views
-1

Ich versuche, einen Animationsclip mit Asset-Bundles zu meinem Spiel zu laden, und dann benutze ich den Animator-Override-Controller, um meine alte Animation durch eine neue zu ersetzen.Einheitsbündel funktioniert nicht für mich?

Die Sache ist, ich habe das Asset-Bundle erstellt und in meinem Ordner-Verzeichnis veröffentlicht, aber egal was ich mache, wird es aus irgendeinem Grund nicht von meinem Code erkannt. Hier

ist das, was ich bisher:

var FilePath = "file://" + Application.streamingAssetsPath + "/Characters/Animations/" +folderName +"idle"; 
     var req = AssetBundle.LoadFromFileAsync(FilePath); 
     yield return req; 
     AssetBundle animationAsset = req.assetBundle; 
     AnimationClip animation = animationAsset.LoadAsset<AnimationClip>("idle") as AnimationClip; 
     print(animationAsset); 

Ob ich Animation Asset drucken oder drucken Animation variabel. Ich werde immer null. Mache ich hier etwas falsch? und ich habe mehrmals überprüft, ob es sich im richtigen Verzeichnis befindet.

Ich höre einige Leute sagen, dass Asset-Bundles sind exklusiv für die Einheit Pro, aber andere sagen, sie sind nicht.

Auch wenn jemand eine bessere Möglichkeit zum Laden von Animation Clips ohne Animation Bundle wie www Strom zum Beispiel kennt, fühlen Sie sich frei, es auch zu teilen, wenn es besser als Asset-Bundle-Methode ist.

Update: Hier ist mein neuestes Code basierend auf dem Feedback:

var FilePath = "file://" + Application.streamingAssetsPath + "/Characters/Animations/" +folderName +"idle"; 
      var req = AssetBundle.LoadFromFileAsync(FilePath); 
      yield return req; 
      AssetBundle animationAsset = req.assetBundle; 
print(animationAsset) 
      AnimationClip animation = animationAsset.LoadAsset<AnimationClip>("idle") as AnimationClip; 
      print(animation); 

Wenn ich die animationAsset drucken, erhalte ich "frei", aber wenn ich (Animation) drucken, bekomme ich null

+0

1.Wo geben Sie diesen Code aus? Editor oder bauen? Wenn Build, welche Plattform? 2.Bitte fügen Sie einen Screenshot der Position der Animationsdatei hinzu. Wir können dies überprüfen, dass dies kein Tippfehler ist. 3. Zeigen Sie uns auch den Wert der 'folderName' Variable oder wie sie initialisiert wird. – Programmer

+0

tut mir leid, dass ich diese Details verpasst habe: 1. Ich habe ein Skript namens animationSwap erstellt, in start() rufe ich startCoroutine (LoadAnimClip (string clipName, string newAnimation, string folderName)) auf, was diese Funktion ist. Momentan ist nur folderName wichtig und das ist momentan auf "Idle" gesetzt. So ist das vollständige Verzeichnis: "StreamingAssets/Characters/Animations/Idle/Idle. Dies wird von Windows Build –

+0

aufgerufen. Wie lade ich hier Screenshots hoch? –

Antwort

0

Erste Sie müssen nicht "" file: // "verwenden, um Bundle zu laden. Sie müssen also den Code ändern wie" var FilePath = Application.streamingAssetsPath + "/ Characters/Animations /" + ordnerName + "idle"; "if Sie werden native Methode verwenden Ich meine 'System.IO' zu Datei laden, als Sie zum Ändern des Pfades wie das, was Sie getan haben, aber zum Laden mit Unity3D-Methoden als Sie sollten nur das ohne 'file: //' Tag.

+0

Hallo, also habe ich versucht, was Sie sagen, und ein Teil davon funktioniert.Wenn ich den "animation asset" -Namen drucke, erkennt er es richtig, aber wenn ich den "Animation" -Namen drucke, bekomme ich immernoch null. –

Verwandte Themen