Fragen und Antworten (FAQ) 💡
Last updated
Last updated
Needle Engine 4.x
Gehen Sie zu Project Settings/Needle und klicken Sie auf die Schaltfläche zum Anmelden. Folgen Sie den Schritten und melden Sie sich bei Ihrem Needle-Konto an. Danach sehen Sie Ihre Kontoinformationen im Unity-Projekt-Einstellungen-Fenster. Wählen Sie das lizenzierte Team aus dem Dropdown-Menü aus.
Needle Engine 3.x
Öffnen Sie Edit/Project Settings/Needle
, um zu den Plugin-Einstellungen für Needle Engine zu gelangen. Oben im Fenster finden Sie Felder zur Eingabe Ihrer Lizenzinformationen.
Email
- Geben Sie die E-Mail-Adresse ein, mit der Sie die Lizenz erworben haben
Invoice ID
- Geben Sie eine der Rechnungs-IDs ein, die Sie per E-Mail erhalten haben
Hinweis: Möglicherweise müssen Sie den lokalen Webserver neu starten, um die Lizenz anzuwenden.
Öffnen Sie Addon Preferences/Needle Engine
, um zu den Needle Engine Addon-Einstellungen zu gelangen
Email
- Geben Sie die E-Mail-Adresse ein, mit der Sie die Lizenz erworben haben
Invoice ID
- Geben Sie eine der Rechnungs-IDs ein, die Sie per E-Mail erhalten haben
Hinweis: Möglicherweise müssen Sie den lokalen Webserver neu starten, um die Lizenz anzuwenden.
Abhängig von Ihrer lokalen Konfiguration sehen Sie möglicherweise eine Warnung in Ihrem Browser bezüglich SSL-Sicherheit.
Dies liegt daran, dass, obwohl die Verbindung verschlüsselt ist, standardmäßig kein SSL-Zertifikat vorhanden ist, das der Browser validieren kann.
Wenn das passiert: Klicken Sie auf Advanced
und Proceed to Site
. In Safari müssen Sie die Seite danach möglicherweise aktualisieren, da sie nicht automatisch fortfährt. Jetzt sollten Sie Ihre Szene im Browser sehen!
Der Dialog sollte nur einmal pro lokalem Server angezeigt werden
::: tip Verbindungen sind gesichert, da wir HTTPS erzwingen, um sicherzustellen, dass WebXR und andere moderne Web-APIs sofort funktionieren. Einige Browser beschweren sich möglicherweise immer noch darüber, dass die SSL-Verbindung (zwischen Ihrem lokalen Entwicklungsserver und der lokalen Webseite) nicht automatisch vertrauenswürdig ist, und dass Sie manuell bestätigen müssen, dass Sie der Seite vertrauen. Automatische Seitenneuladung und Websocket-Verbindungen können ebenfalls betroffen sein, abhängig von den Browser- und Systemeinstellungen.
Wenn das passiert, gibt es normalerweise eine Ausnahme entweder im Engine-Code oder in Ihrem Code. Öffnen Sie die Entwicklerwerkzeuge (Strg + Shift + I oder F12 in Chrome) und prüfen Sie die Konsole auf Fehler. In einigen Fällen, insbesondere wenn Sie gerade die Version des Needle Engine Pakets aktualisiert haben, kann dies durch Stoppen und erneutes Starten des lokalen Entwicklungsservers behoben werden. Klicken Sie dazu auf die laufende Fortschrittsleiste in der unteren rechten Ecke des Editors und klicken Sie auf das kleine X, um die laufende Aufgabe abzubrechen. Drücken Sie dann einfach erneut auf Play.
Dies geschieht normalerweise, wenn Sie benutzerdefinierte Shader oder Materialien verwenden und deren Eigenschaften nicht sauber in bekannte Eigenschaftsnamen für den glTF-Export übersetzt werden. Sie können entweder sicherstellen, dass Sie glTF-kompatible Materialien und Shader verwenden, oder Shader als "custom" markieren, um sie direkt zu exportieren.
Lesen Sie mehr über empfohlene glTF-Workflows:
Lesen Sie mehr über benutzerdefinierte Shader:
Wenn Sie vite oder next.js verwenden, stellen Sie sicher, dass Sie die Needle Engine Plugins zu Ihrer Konfiguration hinzufügen. Beispiel für vite:
Beispiel für next.js
Sie können die fehlenden Variablen auch einfach z.B. in Ihrer Stamm-index.html
in einem Skript-Tag wie folgt deklarieren:
Bitte stellen Sie sicher, dass Sie die Lightmap Encoding auf Normal Quality eingestellt haben. Gehen Sie zu Edit/Project Settings/Player, um die Einstellung zu ändern.
Dies kann viele Gründe haben, aber einige häufige sind:
zu viele Texturen oder Texturen sind zu groß
Meshes haben zu viele Vertices
Meshes haben Vertex-Attribute, die Sie eigentlich nicht benötigen (z.B. haben Normals und Tangents, aber Sie verwenden sie nicht)
Objekte sind deaktiviert und werden nicht ignoriert – deaktivierte Objekte werden ebenfalls exportiert, falls Sie sie zur Laufzeit aktivieren möchten! Setzen Sie ihr Tag auf EditorOnly
, um sie komplett vom Export auszuschließen.
Sie haben mehrere GltfObject
Komponenten in Ihrer Szene und alle haben EmbedSkybox
aktiviert (Sie müssen die Skybox nur einmal pro exportierter Szene haben)
Für Unity: Stellen Sie sicher, dass Sie die Komponente UI/Legacy/Text
und nicht die Komponente TextMeshPro - Text
verwenden
Ihr vorhandener C#-Code wird nicht unverändert exportiert, Sie müssen dafür passenden typescript / javascript schreiben.
Needle verwendet typescript / javascript für Komponenten und generiert C#-Stubs dafür.
Komponenten, die bereits passende JS haben, zeigen dies im Inspector an.
Stellen Sie sicher, dass Ihre Lichter auf "Baked" oder "Realtime" eingestellt sind. "Mixed" wird derzeit nicht unterstützt.
Lichter, die auf Mixed eingestellt sind (mit Lightmapping), beeinflussen Objekte in three.js zweimal, da es derzeit keine Möglichkeit gibt, Lightmap-Objekte von der Beleuchtung auszuschließen
Die Intensität von Lichtschatten kann aufgrund einer three.js-Begrenzung derzeit nicht geändert werden.
Wenn Sie eine benutzerdefinierte Cubemap verwenden: Sie können die Texture Import Settings der Skybox-Textur überschreiben (die Ihrer Cubemap zugewiesen ist)
Wenn Sie die Standard-Skybox verwenden: Fügen Sie eine SkyboxExportSettings
-Komponente an einer beliebigen Stelle in Ihrer Szene hinzu, um die Standardauflösung zu überschreiben
Bitte beachten Sie die folgenden Punkte:
Ihr Licht hat Schatten aktiviert (entweder Soft Shadow oder Hard Shadow)
Ihre Objekte sind auf "Cast Shadows: On" eingestellt (siehe MeshRenderer-Komponente)
Bei direktionalen Lichtern ist die Position des Lichts derzeit wichtig, da die Schattenkamera dort platziert wird, wo sich das Licht in der Szene befindet.
Stellen Sie sicher, dass Ihr Projekt auf Linear colorspace eingestellt ist.
Die Bereitstellung auf Glitch ist eine schnelle Methode zum Prototyping und kann sogar für einige kleine Produktionen funktionieren. Der kleine Server dort hat nicht die Leistung und Bandbreite, um viele Personen in einer persistenten Sitzung zu hosten.
Stellen Sie sicher, dass Sie die WebXR
-Komponente irgendwo innerhalb Ihres Stamm-GltfObject
hinzufügen.
Fügen Sie optional eine AR Session Root
-Komponente zu Ihrem Stamm-GltfObject
oder innerhalb der untergeordneten Hierarchie hinzu, um Platzierung, Skalierung und Ausrichtung für WebXR festzulegen.
Fügen Sie optional eine XR Rig
-Komponente hinzu, um zu steuern, wo Benutzer in VR starten
Beim Erstellen neuer Skripte in npmdefs in Sub-Szenen (d.h. einer Szene, die als Referenz aus einem Skript in Ihrer Root-Export-Szene exportiert wird) müssen Sie derzeit die Root-Szene erneut exportieren. Dies liegt daran, dass der Code-Gen, der für die Registrierung neuer Skripte verantwortlich ist, derzeit nur für Szenen mit einer ExportInfo
-Komponente ausgeführt wird. Dies wird in Zukunft behoben werden.
Der wahrscheinlichste Grund ist eine fehlerhafte Installation.
Prüfen Sie die Konsole und die ExportInfo
-Komponente auf Fehler oder Warnungen.
Wenn diese Warnungen/Fehler nicht geholfen haben, versuchen Sie die folgenden Schritte der Reihe nach. Geben Sie ihnen etwas Zeit zum Abschließen. Stoppen Sie, sobald Ihr Problem behoben ist. Prüfen Sie die Konsole auf Warnungen und Fehler.
Installieren Sie Ihr Projekt, indem Sie Ihre ExportInfo
-Komponente auswählen und auf Install
klicken.
Führen Sie eine saubere Installation durch, indem Sie Ihre ExportInfo
-Komponente auswählen, Alt gedrückt halten und auf Clean Install
klicken.
Versuchen Sie, Ihr Webprojektverzeichnis in einem Befehlszeilentool zu öffnen und befolgen Sie diese Schritte:
run npm install
and then npm run dev-host
Stellen Sie sicher, dass sowohl das lokale Runtime-Paket (node_modules/@needle-tools/engine
) als auch three.js (node_modules/three
) installiert wurden.
Sie können auch in beiden Verzeichnissen npm install
ausführen.
Während die Generierung von C#-Komponenten technisch auch mit Vanilla Javascript funktioniert, empfehlen wir es nicht und unterstützen es nicht vollständig, da es für den Generator mehr Ratespiel oder einfach unmöglich ist zu wissen, welchen C#-Typ er für Ihre Javascript-Klasse erstellen soll. Unten finden Sie ein minimales Beispiel, wie Sie eine Unity-Komponente aus Javascript generieren können, wenn Sie dies wirklich wünschen.
Unter Windows: Stellen Sie sicher, dass Sie toktx zu Ihren Systemumgebungsvariablen hinzugefügt haben. Möglicherweise müssen Sie Ihren Computer nach dem Hinzufügen neu starten, um die Umgebungsvariablen zu aktualisieren. Der Standardinstallationsort ist C:\Program Files\KTX-Software\bin
Stellen Sie sicher, dass Sie kein Projekt auf einem Laufwerk erstellen, das als exFAT formatiert ist, da exFAT keine Symlinks unterstützt, was für Needle Engine für Unity vor Version 3.x erforderlich ist. Sie können die Formatierung Ihrer Laufwerke mit den folgenden Schritten überprüfen:
Öffnen Sie "System Information" (entweder Windows-Taste und geben Sie dies ein oder geben Sie "msinfo32" in cmd ein)
Wählen Sie Components > Storage > Drives
Wählen Sie alles (Strg + A) auf der rechten Seite des Bildschirms aus und kopieren Sie dies (Strg + C) und fügen Sie es hier ein (Strg + V)
Stellen Sie sicher, dass sich Ihr Projekt auf einer Festplatte befindet, die bekanntermaßen mit node.js funktioniert. Hauptgrund für Fehler ist, dass die Festplatte keine Symlinks (Symbolische Links / Softlinks) unterstützt, was für das ordnungsgemäße Funktionieren von node.js eine Voraussetzung ist.NTFS-Formatierung sollte immer funktionieren. Bekannte problematische Dateisystemformate sind exFAT und FAT32.
Um das Format Ihrer Laufwerke zu überprüfen, können Sie:
Öffnen Sie "System Information" (entweder Windows-Taste und geben Sie "System Information" ein oder geben Sie msinfo32
in cmd Windows + R ein)
Wählen Sie "Components > Storage > Drives"
Dort können Sie alle Laufwerke und deren Formatierung aufgelistet sehen. Legen Sie Ihre Projekte auf ein Laufwerk, das NTFS formatiert ist.
@
. Expected identifier, string literal, numeric literal or ..."Needle Engine verwendet typescript-Decorators für die Serialisierung.
Um diesen Fehler zu beheben, stellen Sie sicher, dass Sie experimentalDecorators
in Ihrer tsconfig.json aktivieren.
Sie verwenden wahrscheinlich eine x86_64-Version von Unity auf einem (ARM) Apple Silicon Prozessor. Unity 2020.3 ist nur für x86_64 verfügbar, spätere Versionen haben auch Apple Silicon Versionen. Unsere Unity-Integration, die npm aufruft, wird dies somit von einem x86_64-Prozess aus tun, was zur Verwendung der x86_64-Version von node und vite/esbuild führt. Wenn Sie danach versuchen, npm-Befehle im selben Projekt von einer Apple Silicon App (z.B. VS Code) aus auszuführen, wird npm sich über nicht übereinstimmende Architekturen mit einer langen Fehlermeldung beschweren.
Um dies zu beheben, verwenden Sie eine Apple Silicon Version von Unity (2021.1 oder höher).
Sie können dies auch temporär auf 2020.3 beheben, indem Sie den node_modules
-Ordner löschen und npm install
erneut von VS Code aus ausführen. Sie müssen node_modules
erneut löschen, wenn Sie zurück zu Unity wechseln.
Dies kann passieren, wenn Sie z.B. einen SceneSwitcher
(oder eine andere Komponente, die eine Szene oder ein Asset lädt) haben und das referenzierte Asset in Unity ein GltfObject
enthält, das denselben Namen hat wie Ihre ursprüngliche Szene mit dem SceneSwitcher
. Sie können dies in Unity überprüfen, wenn Sie einen Fehler erhalten, der in etwa lautet:
Um dies zu beheben, können Sie:
Entfernen Sie das GltfObject
im referenzierten Prefab oder Scene
Benennen Sie das GameObject mit der Komponente um, die die referenzierten Szenen lädt
Bekannte Geräte, die Probleme verursachen können:
Lenovo Thinkpad - T495
Wenn Sie Ihre KI lokal ausführen möchten (oder müssen), können Sie die Needle llms.txt-Dateien als Kontext für Ihre lokale KI (z.B. Ollama) verwenden:
Seite automatisch von AI übersetzt
Informationen zum Einrichten eines selbstsignierten Zertifikats für eine reibungslosere Entwicklung finden Sie in den . :::
Wenn die Ladezeit selbst ein Problem darstellt, können Sie versuchen, Ihren Inhalt in mehrere glb-Dateien aufzuteilen und diese bei Bedarf zu laden (das ist es, was wir auf unserer Webseite tun). Damit dies funktioniert, können Sie Ihren Inhalt in Prefabs oder Scenes packen und von jedem Ihrer Skripte aus darauf verweisen. Bitte werfen Sie einen Blick auf .
Stellen Sie sicher, dass Sie die befolgen und lesen Sie über das
Der Faktor Intensity Multiplier
für Skybox in Lighting/Environment
wird derzeit nicht unterstützt und hat keinen Effekt in Needle Engine
Siehe auch die Dokumentation über das .
Wir arbeiten an anderen Networking-Ideen, aber in der Zwischenzeit können Sie die Webseite woanders hosten (mit node.js-Unterstützung) oder sie einfach remixen, um die Last auf mehrere Server zu verteilen. Sie können auch das selbst woanders hosten, wo es skalieren kann, z.B. in der Google Cloud.
Stellen Sie sicher, dass Sie die befolgen.
Bitte überprüfen Sie, ob Sie sich nicht versehentlich im Debug-Modus des Inspectors befinden – wechseln Sie zurück zu Normal:
Stellen Sie sicher, dass Sie
Wenn dies das Problem nicht behebt, fragen Sie bitte .
Bitte lesen Sie den Abschnitt .
Verwenden Sie einen Detector , um festzustellen, ob Ihr Gerät WebGL 2 unterstützt. Er gibt auch Hinweise auf mögliche Ursachen Ihres Problems, aber stellen Sie generell sicher, dass Sie Ihren Browser und Ihre Treiber aktualisiert haben. WebGL 1 wird nicht unterstützt.