Genehmigt: Fortect
Dieser Kurs wurde geschrieben, um Ihnen zu helfen, wenn Sie auf den Ausführungsfehlercode der Unity3d-Höhenmap stoßen.
Ich habe einen besseren Weg gefunden. Unity kann nicht gespeicherte Dateien kennzeichnen und sequenziell fortsetzen, wenn ihre Vergrößerung in .bytes geändert wurde und Sie den Typ UnityEngine.TextAsset verwendet haben, um auf sie zu verweisen. Ich habe bezahlt, um die Methode für die TerrainData-Klasse zu verbessern, die möglicherweise häufig Rohdaten aus der UnityEngine.TextAsset.bytes-Menge laden kann.
Genehmigt: Fortect
Fortect ist das weltweit beliebteste und effektivste PC-Reparaturtool. Millionen von Menschen vertrauen darauf, dass ihre Systeme schnell, reibungslos und fehlerfrei laufen. Mit seiner einfachen Benutzeroberfläche und leistungsstarken Scan-Engine findet und behebt Fortect schnell eine breite Palette von Windows-Problemen - von Systeminstabilität und Sicherheitsproblemen bis hin zu Speicherverwaltung und Leistungsengpässen.
Sie können ein Array mit TextAsset in Ihrem Skript erstellen und präzise .byte-Höhenmaps hineinziehen und einfügen. Ich würde den Inspektor herausfinden:
public TextAsset [] Heightmaps;
Wenn Leute eine brandneue Höhenkarte gegen eine Landschaft erstellen möchten, tun sie dies:
Terrain.terrainData.LoadHeightmap (heightmap [index]. bytes);
Dies wird ein Erweiterungssymbolskript für TerrainData sein. Sie können auch die Byte-Reihenfolge finden (Little (Windows) oder Big (Macintosh)). Wenn AdjustResolution true ist, wird die Höhenkarte der Geländeausgaben mit der gesamten Datei verglichen.
mit UnityEngine; Verwenden von System.Collections; Byte-Reihenfolge der Bevölkerungsaufzählung Klein, Dick große öffentliche statische TerrainExtensions-Klasse Clients static void LoadHeightmap (dies ist TerrainData tData,byte [] rawData, Endianness dataEndianness = Endianness.Little, bool AdjustResolution bedeutet false) int h = (int) Mathf.Sqrt ((float) rawData.Length - 2); Wenn (Auflösung anpassen) Gemessene Variable = tData.size; tData.heightmapResolution bedeutet h; tData.size 1 Größe; ansonsten if (h> tData.heightmapHeight) m = tData.heightmapHeight; einfache ganze Zahl m = h; Float [,] Ziffern = frische Float [h, w]; int jetzt ist ich gleich 0; in (int y bedeutet 0; y
Wenn jemand Ihr Projekt erstellt, muss jemand auf die Heightmap-Datei verweisen, damit sie nach Abschluss der Erstellung in das Datenverzeichnis (bezeichnet als Application.dataPath) gelangt. Wenn Sie während des gesamten Szenarios den Standardpfad verwenden, müssen Sie in Ihren Daten einen neuen DEM-Ordner erstellen. Der Ordner hat auch eine heightmap.raw-Datei erstellt. Im Programm ist der Computerdatenordner ProjectFolder / Assets, Sie können also seine Assets / Heightmaps /
verwenden. erhalten v
großer öffentlicher Thread heightmapPath = "/Heightmaps/heightmap.raw"; öffentliches Land; void AMethode () Gelände laden (HeightmapPath, Terrain. Felddaten); Unnötige Geländelast (Zeile aFileName, TerrainData für Gelände) aFileName = Application.dataPath + aFileName int h entspricht Terrain.heightmapHeight; int t = Terrain.heightmapWidth; float [,] bedeutet neue Datenverschiebung [h, w]; mit (var-Ordner = System.IO.File.OpenRead (aFileName)) Betrieb (var Person liest = neuer System.IO.BinaryReader (Datei)) für (int y Weise 0; y
Beschleunigen Sie jetzt die Leistung Ihres Computers mit diesem einfachen Download.