public static LoadLevelEventArgs Create(LevelData levelData, object userData = null)
        {
            LoadLevelEventArgs loadLevelEventArgs = ReferencePool.Acquire <LoadLevelEventArgs>();

            loadLevelEventArgs.LevelData = levelData;
            loadLevelEventArgs.UserData  = userData;
            return(loadLevelEventArgs);
        }
        private void OnLoadLevel(object sender, GameEventArgs e)
        {
            LoadLevelEventArgs ne = (LoadLevelEventArgs)e;

            if (ne == null)
            {
                return;
            }

            if (ne.LevelData == null)
            {
                Log.Error("Load level event param LevelData is null");
                return;
            }

            if (ne.LevelData.SceneData == null)
            {
                Log.Error("Load level event param SceneData is null");
                return;
            }

            changeScene = true;
            procedureOwner.SetData <VarInt32>(Constant.ProcedureData.NextSceneId, ne.LevelData.SceneData.Id);
        }