private void OnSceneStatusChanged(SceneLoadUnloadRequest request)
 {
     if (request.m_OpType == SceneLoadUnloadRequest.OpType.Load)
     {
         SceneLoadUnloadRequestHolder.OnSceneLoad(SceneManager.GetSceneByName(request.m_SceneName), request);
         return;
     }
     if (request.m_OpType == SceneLoadUnloadRequest.OpType.Unload)
     {
         SceneLoadUnloadRequestHolder.OnSceneUnload(SceneManager.GetSceneByName(request.m_SceneName), request);
     }
 }
    public void UnloadScene(string scene_name, SceneLoadUnloadRequest.Reason reason)
    {
        SceneLoadUnloadRequest sceneLoadUnloadRequest = new SceneLoadUnloadRequest
        {
            m_SceneName = scene_name,
            m_OpType    = SceneLoadUnloadRequest.OpType.Unload,
            m_Reason    = reason
        };

        sceneLoadUnloadRequest.m_Result = SceneLoadUnloadRequest.UpdateResult.PreStart;
        SceneLoadUnloadRequestHolder.OnSceneUnload(SceneManager.GetSceneByName(sceneLoadUnloadRequest.m_SceneName), sceneLoadUnloadRequest);
        this.Add(sceneLoadUnloadRequest);
    }