Unity 6.3
0 онлайн 67 гостей 3 в системе
Вход

ArchiveFileInterface

класс в Unity.IO.Archive

Выполнено в:UnityEngine.CoreModule

Описание

Предоставляет методы управления архивными файлами Unity.

Этот класс предоставляет низкоуровневый интерфейс для управления архивными файлами Unity.

Архивные файлы монтируют в ContentNamespace. После того, как архив будет монтирован, его содержимое может быть доступно с AsyncReadManager или ContentLoadInterface.LoadContentFileAsync.

AssetBundles использует формат архива и может быть загружен с помощью API, но в большинстве случаев предпочтительнее загружать AssetBundles с помощью AssetBundle класс либо через пакет Addressables.

data.unity3d файл генерируется, когда BuildPipeline.BuildPlayer вызывает с BuildOptions.CompressWithLz4 или BuildOptions.CompressWithLz4HC файл архива. В этом случае файл архива ArchiveFileInterface API обычно не требуется, так как содержимое архива автоматически доступно в Проигрывателе.

Дополнительные ресурсы: ContentBuildInterface.ArchiveAndCompress.

// The following example describes how to create an archive with
// ContentBuildInterface.ArchiveAndCompress and mount the archive with
// ArchiveFileInterface.MountAsync. This example produces an archive that uses LZ4
// compression and contains one text file.

using Unity.Collections.LowLevel.Unsafe; using Unity.Content; using Unity.IO.Archive; using Unity.IO.LowLevel.Unsafe; using UnityEngine; #if UNITY_EDITOR using UnityEditor.Build.Content; #endif

public class SampleBehaviour : MonoBehaviour { #if UNITY_EDITOR unsafe void CreateAndMountArchive() { // Create the Archive ResourceFile[] rFiles = new ResourceFile[1]; ResourceFile rf = new ResourceFile(); rf.fileName = "Assets/file1.txt"; // Path of the existing file, to copy into the Archive rf.fileAlias = "file1.txt"; // Path given to the file inside the Archive rFiles[0] = rf;

string archivePath = System.IO.Path.Combine(Application.streamingAssetsPath, "myArchive"); ContentBuildInterface.ArchiveAndCompress(rFiles, archivePath, UnityEngine.BuildCompression.LZ4);

// Mount the Archive var ns = ContentNamespace.GetOrCreateNamespace("MyNamespace123"); ArchiveHandle ahandle = ArchiveFileInterface.MountAsync(ns, archivePath, "a:"); ahandle.JobHandle.Complete();

string textFilePath = ahandle.GetMountPath() + "file1.txt"; // ns:/MyNamespace123/a:/file1.txt ReadCommand cmd; cmd.Size = 1024; cmd.Buffer = UnsafeUtility.Malloc(cmd.Size, 4, Unity.Collections.Allocator.Temp); cmd.Offset = 0; NativeArray<ReadCommand> cmds = new NativeArray<ReadCommand>(1, Allocator.Persistent); cmds[0] = cmd;

ReadHandle rHandle = AsyncReadManager.Read(textFilePath, (ReadCommand*)cmds.GetUnsafePtr(), 1); rHandle.JobHandle.Complete();

// ...At this point cmd.Buffer contains contents from file1.txt (up to 1024 bytes)...

rHandle.Dispose(); UnsafeUtility.Free(cmd.Buffer, Unity.Collections.Allocator.Temp); cmds.Dipose():

ahandle.Unmount().Complete(); } #endif }

Статические методы

Метод Описание
GetMountedArchivesПолучает все подключенные архивы.
MountAsyncЗагружает все файлы в архиве в точку монтирования.