Unity - Scripting API: Unity.IO.LowLevel.Unsafe.AsyncReadManager.Read (original) (raw)
Suggest a change
Success!
Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.
Close
Submission failed
For some reason your suggested change could not be submitted. Please try again in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.
Close
Your name Your email Suggestion*
Cancel
Parameters
Parameter | Description |
---|---|
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. |
Returns
ReadHandle Used to monitor the progress and status of the read command.
Description
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 /readCmds/; 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](Application-streamingAssetsPath.html), "myfile.bin");
cmds = new NativeArray<[ReadCommand](Unity.IO.LowLevel.Unsafe.ReadCommand.html)>(1, [Allocator.Persistent](Unity.Collections.Allocator.Persistent.html));
[ReadCommand](Unity.IO.LowLevel.Unsafe.ReadCommand.html) cmd;
cmd.Offset = 0;
cmd.Size = 1024;
cmd.Buffer = (byte*)[UnsafeUtility.Malloc](Unity.Collections.LowLevel.Unsafe.UnsafeUtility.Malloc.html)(cmd.Size, 16, [Allocator.Persistent](Unity.Collections.Allocator.Persistent.html));
cmds[0] = cmd;
readHandle = [AsyncReadManager.Read](Unity.IO.LowLevel.Unsafe.AsyncReadManager.Read.html)(filePath, ([ReadCommand](Unity.IO.LowLevel.Unsafe.ReadCommand.html)*)cmds.GetUnsafePtr(), 1, assetName, typeID, subsystem);
}
public unsafe void [Update](PlayerLoop.Update.html)()
{
if (readHandle.IsValid() && readHandle.Status != [ReadStatus.InProgress](Unity.IO.LowLevel.Unsafe.ReadStatus.InProgress.html))
{
[Debug.LogFormat](Debug.LogFormat.html)("Read {0}", readHandle.Status == [ReadStatus.Complete](Unity.IO.LowLevel.Unsafe.ReadStatus.Complete.html) ? "Successful" : "Failed");
readHandle.Dispose();
[UnsafeUtility.Free](Unity.Collections.LowLevel.Unsafe.UnsafeUtility.Free.html)(cmds[0].Buffer, [Allocator.Persistent](Unity.Collections.Allocator.Persistent.html));
cmds.Dispose();
}
}
}
Parameters
Parameter | Description |
---|---|
fileHandle | The FileHandle to be read from, opened by AsyncReadManager.OpenFileAsync. |
readCmdArray | A struct containing the read commands to queue. |
Returns
ReadHandle A ReadHandle object you can use to check the status and monitor the progress of the read operations.
Description
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.Note: WebGL builds do not support using AsyncReadManager
to open files from a remote web server; for example, from the path Application.streamingAssetsPath
which maps to a URL on a remote web server.