EllanJiang/GameFramework · error · GameFrameworkException
Load binary callbacks is invalid.
Error message
Load binary callbacks is invalid.
What it means
ResourceManager.LoadBinary(string, LoadBinaryCallbacks) validates loadBinaryCallbacks and throws this GameFrameworkException when it is null. Callbacks are required so the caller receives the loaded binary bytes or the failure reason. This is the final guard before m_ResourceLoader.LoadBinary is called with null userData.
Solutions
- Pass an initialized LoadBinaryCallbacks with success and failure handlers
- Provide no-op handlers when the result is not needed
- Adjust wrappers to construct or require callbacks rather than forwarding null
Example fix
// before
resourceManager.LoadBinary(binaryAssetName, null);
// after
resourceManager.LoadBinary(binaryAssetName, new LoadBinaryCallbacks(
(assetName, bytes, duration) => { /* use bytes */ },
(assetName, status) => { /* handle failure */ })); Defensive patterns
Strategy: validation
Validate before calling
if (loadBinaryCallbacks == null) throw new ArgumentException("loadBinaryCallbacks required", nameof(loadBinaryCallbacks)); Type guard
bool HasBinaryCallbacks(LoadBinaryCallbacks? c) => c is not null;
Try / catch
try { resourceManager.LoadBinary(binaryAssetName, loadBinaryCallbacks); } catch (GameFrameworkException ex) { Log.Error(ex.Message); } Prevention
- Always supply LoadBinaryCallbacks with success and failure handlers
- Centralize binary callback creation in a helper
- Avoid null-callback fire-and-forget patterns with this framework
When it happens
Trigger: Calling LoadBinary(binaryAssetName, loadBinaryCallbacks) with loadBinaryCallbacks == null.
Common situations: Fire-and-forget binary loads passing null; callback fields left unassigned; wrapper APIs around LoadBinary that omit callback parameters.
Related errors
- Unload scene callbacks is invalid.
- Owner is invalid.
- Resource manager is invalid.
- Data provider helper is invalid.
- Type is invalid.
AI-assisted analysis of EllanJiang/GameFramework@d0c010b051 (2026-09-15).
Data as JSON: /api/errors/a53fbad7556e9440.
Report an issue: GitHub.
Appendix: source
Thrown at GameFramework/Resource/ResourceManager.cs:1828
{
return m_ResourceLoader.GetBinaryLength(binaryAssetName);
}
/// <summary>
/// 异步加载二进制资源。
/// </summary>
/// <param name="binaryAssetName">要加载二进制资源的名称。</param>
/// <param name="loadBinaryCallbacks">加载二进制资源回调函数集。</param>
public void LoadBinary(string binaryAssetName, LoadBinaryCallbacks loadBinaryCallbacks)
{
if (string.IsNullOrEmpty(binaryAssetName))
{
throw new GameFrameworkException("Binary asset name is invalid.");
}
if (loadBinaryCallbacks == null)
{
throw new GameFrameworkException("Load binary callbacks is invalid.");
}
m_ResourceLoader.LoadBinary(binaryAssetName, loadBinaryCallbacks, null);
}
/// <summary>
/// 异步加载二进制资源。
/// </summary>
/// <param name="binaryAssetName">要加载二进制资源的名称。</param>
/// <param name="loadBinaryCallbacks">加载二进制资源回调函数集。</param>
/// <param name="userData">用户自定义数据。</param>
public void LoadBinary(string binaryAssetName, LoadBinaryCallbacks loadBinaryCallbacks, object userData)
{
if (string.IsNullOrEmpty(binaryAssetName))
{
throw new GameFrameworkException("Binary asset name is invalid.");
}
View on GitHub (pinned to d0c010b051)