Version: 2021.2
言語: 日本語
public static Unity.IO.LowLevel.Unsafe.ReadHandle Read (string filename, ReadCommand* readCmds, uint readCmdCount, string assetName, ulong typeID, Unity.IO.LowLevel.Unsafe.AssetLoadingSubsystem subsystem);

パラメーター

filename The filename to read from.
readCmds A pointer to an array of ReadCommand structs that specify offset, size, and destination buffer.
readCmdCount The number of read commands pointed to by readCmds.
assetName (Optional) The name of the object being read, for metrics purposes.
typeID (Optional) The TypeID of the object being read, for metrics purposes.
subsystem (Optional) The Subsystem tag for the read operation, for metrics purposes.

戻り値

ReadHandle Used to monitor the progress and status of the read command.

説明

Issues an asynchronous file read operation. Returns a ReadHandle.

You can set the assetName, typeId, and subsystem parameters to collect asset-specific metrics for this read operation. When you enable metrics collection with AsyncReadManagerMetrics.StartCollectingMetrics, Unity includes this information as part of the AsyncReadManagerMetrics, allowing you to analyze how different types of assets affect performance.

The AsyncReadManager copies the data referenced by Read; you can dispose or free the data immediately after calling Read.

using System.IO;
using Unity.Collections;
using Unity.IO.LowLevel.Unsafe;
using Unity.Collections.LowLevel.Unsafe;
using UnityEngine;

class AsyncReadSample : MonoBehaviour { private ReadHandle readHandle; NativeArray<ReadCommand> cmds; string assetName = "myfile"; ulong typeID = 114; // from ClassIDReference AssetLoadingSubsystem subsystem = AssetLoadingSubsystem.Scripts;

public unsafe void Start() { string filePath = Path.Combine(Application.streamingAssetsPath, "myfile.bin"); cmds = new NativeArray<ReadCommand>(1, Allocator.Persistent); ReadCommand cmd; cmd.Offset = 0; cmd.Size = 1024; cmd.Buffer = (byte*)UnsafeUtility.Malloc(cmd.Size, 16, Allocator.Persistent); cmds[0] = cmd; readHandle = AsyncReadManager.Read(filePath, (ReadCommand*)cmds.GetUnsafePtr(), 1, assetName, typeID, subsystem); }

public unsafe void Update() { if (readHandle.IsValid() &amp;&amp; readHandle.Status != ReadStatus.InProgress) { Debug.LogFormat("Read {0}", readHandle.Status == ReadStatus.Complete ? "Successful" : "Failed"); readHandle.Dispose(); UnsafeUtility.Free(cmds[0].Buffer, Allocator.Persistent); cmds.Dispose(); } } }

パラメーター

fileHandle The FileHandle to be read from, opened by AsyncReadManager.OpenFileAsync.
readCmdArray A struct containing the read commands to queue.

戻り値

ReadHandle A ReadHandle object you can use to check the status and monitor the progress of the read operations.

説明

Queues a set of read operations for a file opened with OpenFileAsync.

This function makes a copy of the ReadCommandArray struct passed as a parameter internally, so you do not need to maintain the array.

using System.IO;
using Unity.Collections;
using Unity.IO.LowLevel.Unsafe;
using Unity.Collections.LowLevel.Unsafe;
using UnityEngine;
using Unity.Jobs;

class AsyncReadSample : MonoBehaviour { static string TestFilename = Path.Combine(Application.streamingAssetsPath, "myfile.bin");

public unsafe void Start() { ReadCommand cmd; cmd.Offset = 0; cmd.Size = 1024; cmd.Buffer = (byte*)UnsafeUtility.Malloc(cmd.Size, 16, Allocator.Persistent);

FileHandle fileHandle = AsyncReadManager.OpenFileAsync(TestFilename);

ReadCommandArray readCmdArray; readCmdArray.ReadCommands = &amp;cmd; readCmdArray.CommandCount = 1;

ReadHandle readHandle = AsyncReadManager.Read(fileHandle, readCmdArray);

JobHandle closeJob = fileHandle.Close(readHandle.JobHandle);

closeJob.Complete();

// ... Use the data read into the buffer

readHandle.Dispose();

for (int i = 0; i < readCmdArray.CommandCount; i++) UnsafeUtility.Free(readCmdArray.ReadCommands[i].Buffer, Allocator.Persistent); } }
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961