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

  1. Pass an initialized LoadBinaryCallbacks with success and failure handlers
  2. Provide no-op handlers when the result is not needed
  3. 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

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


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)