Approuvé : Fortect
Ce tutoriel a été initialement écrit pour vous aider si vous recevez ce code d’erreur d’exécution d’unity3d heightmap.
J’ai trouvé un meilleur moyen. Unity peut analyser les fichiers non enregistrés et continuer de manière séquentielle si leur extension est passée à .bytes et que vous avez utilisé la version UnityEngine.TextAsset pour les référencer. J’ai payé pour étendre n’importe quelle méthode pour la classe TerrainData, qui peut généralement charger des données brutes à partir du tableau UnityEngine.TextAsset.bytes.
Approuvé : Fortect
Fortect est l'outil de réparation de PC le plus populaire et le plus efficace au monde. Des millions de personnes lui font confiance pour assurer le fonctionnement rapide, fluide et sans erreur de leurs systèmes. Avec son interface utilisateur simple et son puissant moteur d'analyse, Fortect détecte et corrige rapidement un large éventail de problèmes Windows, de l'instabilité du système et des problèmes de sécurité à la gestion de la mémoire et aux goulots d'étranglement des performances.
Vous pouvez créer un tableau de TextAsset dans votre script et y glisser et déposer des heightmaps .byte complètes. Je dirais à l’inspecteur particulier :
public TextAsset [] Heightmaps;
Lorsque les gens veulent définir une carte de hauteur à partir d’un paysage, ils le font :
Terrain.terrainData.LoadHeightmap (heightmap [index]. bytes);
Il s’agit d’un script de symbole d’extension substantiel pour TerrainData. Vous pouvez rencontrer l’ordre des octets (Petit (Windows) ou Grand (Macintosh)). Si AdjustResolution est vrai, la carte de hauteur de résultat du terrain est comparée à l’ensemble du fichier.
souffrant de UnityEngine ; Utilisation de System.Collections ; ordre des octets de l'énumération publique Petit, Épais son public classe TerrainExtensions Clients static void LoadHeightmap (il s'agit de TerrainData tData,byte [] rawData, Endianness dataEndianness = Endianness.Little, bool AdjustResolution technique false) int t = (int) Mathf.Sqrt ((float) rawData.Length / 2); Si (ajuster la résolution) La taille de la variable implique tData.size ; tData.heightmapResolution implique h; tData.size - taille ; mieux si (h> tData.heightmapHeight) mètres = tData.heightmapHeight; l'entier simple y est égal à h ; float [,] digits = nouveau plané [h, w] ; int maintenant i = 0; concernant (int y signifie 0; y
Si quelqu'un construit votre projet, vous devrez peut-être pointer le fichier heightmap vers lequel le répertoire de données (noté Application.dataPath) une fois la construction terminée. En utilisant le chemin par défaut lors de cet événement, vous devez créer un nouveau fichier DEM dans vos données. Le dossier contient également un important fichier heightmap.raw. Dans le programme, le répertoire de données est ProjectFolder / Assets, vous pouvez donc commencer avec ses Assets / Heightmaps /
. recevoir v
grande chaîne publique heightmapPath équivaut à "/Heightmaps/heightmap.raw" ; domaine public ; void une méthode () Chargez le terrain (HeightmapPath, Terrain. données de domaine); Charge de terrain inutile (ligne aFileName, TerrainData pour le terrain) aFileName implique Application.dataPath + aFileName int h est égal à Terrain.heightmapHeight; int t = Terrain.heightmapWidth; errer [,] signifie de nouvelles données flottantes [h, w] ; avec (fichier var signifie System.IO.File.OpenRead (aFileName)) utilisation de (var personne lecture = nouveau System.IO.BinaryReader (fichier)) pour (int y sources 0; y
Accélérez les performances de votre ordinateur dès maintenant avec ce simple téléchargement.