EllanJiang/GameFramework · error · GameFrameworkException
Can not load binary ' ' which is not ready.
Error message
Can not load binary '{0}' which is not ready. What it means
The binary asset name exists in the resource index, but its ResourceInfo.Ready is false — the resource has not been downloaded/copied to a usable local location yet. LoadBinary only serves resources that are fully available; when no LoadBinaryFailureCallback is supplied it throws.
Solutions
- Wait for resource update completion (subscribe to ResourceComponent's update events / wait until UpdateResources finishes) before calling LoadBinary.
- Check HasAsset/asset readiness before loading, and schedule the load after the resource becomes Ready.
- Verify the resource update did not fail (check update error events) and retry the update if it did.
- Provide a LoadBinaryFailureCallback so NotReady failures are reported gracefully instead of throwing.
Example fix
// before m_ResourceComponent.LoadBinary(binaryName, callbacks, userData); // called before hot-update finishes // after m_ResourceComponent.ResourceUpdateAllComplete += () => m_ResourceComponent.LoadBinary(binaryName, callbacks, userData);
Defensive patterns
Strategy: retry
Validate before calling
// only load once resource update has finished
if (!m_ResourceComponent.IsResourceAllReady)
{
pendingLoads.Enqueue(binaryName); // replay after ResourceUpdateAllComplete
return;
}
m_ResourceComponent.LoadBinary(binaryName, callbacks, userData); Type guard
bool IsReadyToLoad(ResourceComponent rc) => rc != null && rc.IsResourceAllReady;
Try / catch
try { m_ResourceComponent.LoadBinary(binaryName, callbacks, userData); }
catch (GameFrameworkException ex) when (ex.Message.Contains("which is not ready"))
{ RetryAfterUpdateComplete(binaryName); } Prevention
- Sequence all loads after the resource update-all-complete event.
- Never load binaries synchronously at startup before CheckVersion/UpdateResources.
- Handle update-failure events so NotReady resources get re-updated.
- Queue and replay deferred loads instead of failing fast.
When it happens
Trigger: Calling LoadBinary while the resource is still being downloaded in an updatable resource mode (single/multi variant update in progress), or before CheckVersion/UpdateResource completes; also when update failed silently and Ready never became true.
Common situations: Hot-update flow where game logic loads a binary before the ResourceComponent reports all resources updated; weak network leaving the resource in NotReady; user skipping update and directly requesting a remote binary.
Understand the failure class
Background: "Invalid state transition" errors: "status must be X, actually Y", "already rejected/charging/uninstalled", "cannot ... while running" — what they mean when a library rejects your call — this error's family across 31 libraries.
Related errors
- Can not load binary ' ' from file system which is not ready.
- Can not load binary ' ' from file system which is not a…
- Can not load binary ' ' from file system which is not exist.
- Can not load binary ' ' from file system which is not use…
- Can not load binary ' ' which is not a binary asset.
AI-assisted analysis of EllanJiang/GameFramework@d0c010b051 (2026-09-15).
Data as JSON: /api/errors/a7710210269dd47b.
Report an issue: GitHub.
Appendix: source
Thrown at GameFramework/Resource/ResourceManager.ResourceLoader.cs:587
if (loadBinaryCallbacks.LoadBinaryFailureCallback != null)
{
loadBinaryCallbacks.LoadBinaryFailureCallback(binaryAssetName, LoadResourceStatus.NotExist, errorMessage, userData);
return;
}
throw new GameFrameworkException(errorMessage);
}
if (!resourceInfo.Ready)
{
string errorMessage = Utility.Text.Format("Can not load binary '{0}' which is not ready.", binaryAssetName);
if (loadBinaryCallbacks.LoadBinaryFailureCallback != null)
{
loadBinaryCallbacks.LoadBinaryFailureCallback(binaryAssetName, LoadResourceStatus.NotReady, errorMessage, userData);
return;
}
throw new GameFrameworkException(errorMessage);
}
if (!resourceInfo.IsLoadFromBinary)
{
string errorMessage = Utility.Text.Format("Can not load binary '{0}' which is not a binary asset.", binaryAssetName);
if (loadBinaryCallbacks.LoadBinaryFailureCallback != null)
{
loadBinaryCallbacks.LoadBinaryFailureCallback(binaryAssetName, LoadResourceStatus.TypeError, errorMessage, userData);
return;
}
throw new GameFrameworkException(errorMessage);
}
if (resourceInfo.UseFileSystem)
{
loadBinaryCallbacks.LoadBinarySuccessCallback(binaryAssetName, LoadBinaryFromFileSystem(binaryAssetName), 0f, userData);
}View on GitHub (pinned to d0c010b051)