EllanJiang/GameFramework · error · GameFrameworkException
Unload scene success callback is invalid.
Error message
Unload scene success callback is invalid.
What it means
The UnloadSceneCallbacks constructor requires a non-null unload-scene success callback; the failure callback may be omitted but the success callback is mandatory. Passing null means the framework could not notify the caller when a scene finishes unloading, so it throws immediately. This is a fail-fast argument check.
Solutions
- Provide a valid UnloadSceneSuccessCallback delegate to the constructor
- Check that the method assigned to the success callback is not conditionally null
- Only construct UnloadSceneCallbacks after the handler is assigned
Example fix
// before new UnloadSceneCallbacks(null, OnUnloadSceneFailure); // after new UnloadSceneCallbacks(OnUnloadSceneSuccess, OnUnloadSceneFailure);
Defensive patterns
Strategy: validation
Validate before calling
if (onSuccess == null) { Log.Error("Unload scene success callback required"); return; } Type guard
bool HasSuccessCallback(UnloadSceneSuccessCallback cb) => cb != null;
Try / catch
try { var cbs = new UnloadSceneCallbacks(onSuccess, onFailure); } catch (GameFrameworkException ex) when (ex.Message == "Unload scene success callback is invalid.") { Log.Error(ex, "Missing success callback"); } Prevention
- Never pass nullable delegates to callback bundle constructors
- Assign handler methods before constructing the callbacks object
- Prefer method groups over conditionally-initialized delegate fields
When it happens
Trigger: Constructing UnloadSceneCallbacks with null for the unloadSceneSuccessCallback parameter, e.g. when passing callbacks to ResourceManager's UnloadScene API.
Common situations: Passing an uninitialized delegate/method-group reference, a conditional callback that was never assigned, or copying callback-creation code and leaving the success handler out.
Related errors
- Check resources complete callback is invalid.
- Dependency assets is invalid.
- File system name is invalid.
- Init resources complete callback is invalid.
- Read-only path is invalid.
AI-assisted analysis of EllanJiang/GameFramework@d0c010b051 (2026-09-15).
Data as JSON: /api/errors/2a270af7830b3c5a.
Report an issue: GitHub.
Appendix: source
Thrown at GameFramework/Resource/UnloadSceneCallbacks.cs:36
/// <summary>
/// 初始化卸载场景回调函数集的新实例。
/// </summary>
/// <param name="unloadSceneSuccessCallback">卸载场景成功回调函数。</param>
public UnloadSceneCallbacks(UnloadSceneSuccessCallback unloadSceneSuccessCallback)
: this(unloadSceneSuccessCallback, null)
{
}
/// <summary>
/// 初始化卸载场景回调函数集的新实例。
/// </summary>
/// <param name="unloadSceneSuccessCallback">卸载场景成功回调函数。</param>
/// <param name="unloadSceneFailureCallback">卸载场景失败回调函数。</param>
public UnloadSceneCallbacks(UnloadSceneSuccessCallback unloadSceneSuccessCallback, UnloadSceneFailureCallback unloadSceneFailureCallback)
{
if (unloadSceneSuccessCallback == null)
{
throw new GameFrameworkException("Unload scene success callback is invalid.");
}
m_UnloadSceneSuccessCallback = unloadSceneSuccessCallback;
m_UnloadSceneFailureCallback = unloadSceneFailureCallback;
}
/// <summary>
/// 获取卸载场景成功回调函数。
/// </summary>
public UnloadSceneSuccessCallback UnloadSceneSuccessCallback
{
get
{
return m_UnloadSceneSuccessCallback;
}
}
/// <summary>View on GitHub (pinned to d0c010b051)