public void LoadAsync <T>(string asset, OnLoaded <T> onLoaded) where T : UnityEngine.Object
        {
            if (string.IsNullOrEmpty(asset))
            {
                onLoaded(null);
            }

            if (loadMode == LoadMode.Original)
            {
                var request = OriginalResourceLoader.loadResourceAsync <T>(resourcePath, asset);
                keysToAdd.Add(new AsyncRequest(request), new LoadFinishCallback(onLoaded, LoadFinishCallback.Type.TypeT));
            }
            else if (loadMode == LoadMode.AssetBundle)
            {
                var request = bundleResourceLoader.LoadAssetAsync <T>(asset);
                keysToAdd.Add(new AsyncRequest(request), new LoadFinishCallback(onLoaded, LoadFinishCallback.Type.TypeT));
            }
#if UNITY_EDITOR
            else if (loadMode == LoadMode.Editor)
            {
                var result = UnityEditor.AssetDatabase.LoadAssetAtPath <T>(asset);
                onLoaded(result);
            }
#endif
        }
        public void LoadSceneAsync(string path, OnLoaded_Void onLoaded, LoadSceneMode mode = LoadSceneMode.Single)
        {
            if (string.IsNullOrEmpty(path))
            {
                onLoaded();
            }

            if (loadMode == LoadMode.Original)
            {
                var request = OriginalResourceLoader.LoadSceneAsync(path, mode);
                keysToAdd.Add(new AsyncRequest(request), new LoadFinishCallback(onLoaded, LoadFinishCallback.Type.TypeVoid));
            }
            else if (loadMode == LoadMode.AssetBundle)
            {
                var request = bundleResourceLoader.LoadSceneAsync(path, mode);
                keysToAdd.Add(new AsyncRequest(request), new LoadFinishCallback(onLoaded, LoadFinishCallback.Type.TypeVoid));
            }
#if UNITY_EDITOR
            else if (loadMode == LoadMode.Editor)
            {
                var request = OriginalResourceLoader.LoadSceneAsync(path, mode);
                keysToAdd.Add(new AsyncRequest(request), new LoadFinishCallback(onLoaded, LoadFinishCallback.Type.TypeVoid));
            }
#endif
        }
        public T Load <T>(string asset) where T : UnityEngine.Object
        {
            T result = null;

            if (loadMode == LoadMode.Original)
            {
                result = OriginalResourceLoader.loadResource <T>(resourcePath, asset);
            }
            else if (loadMode == LoadMode.AssetBundle)
            {
                result = bundleResourceLoader.LoadAsset <T>(asset);
            }
#if UNITY_EDITOR
            else if (loadMode == LoadMode.Editor)
            {
                result = UnityEditor.AssetDatabase.LoadAssetAtPath <T>(asset);
            }
#endif

            return(result);
        }
        public void LoadScene(string path, LoadSceneMode mode = LoadSceneMode.Single)
        {
            if (string.IsNullOrEmpty(path))
            {
                Debug.LogError("ResourceManager LoadScene parameter path is empty.");
                return;
            }


            if (loadMode == LoadMode.Original)
            {
                OriginalResourceLoader.LoadScene(path, mode);
            }
            else if (loadMode == LoadMode.AssetBundle)
            {
                bundleResourceLoader.LoadScene(path, mode);
            }
#if UNITY_EDITOR
            else if (loadMode == LoadMode.Editor)
            {
                OriginalResourceLoader.LoadScene(path, mode);
            }
#endif
        }