public static bool LoadAssetAsyncCallback<T>(string assetBundleName, string assetName, Func<T, bool> onAssetLoaded) where T : UnityEngine.Object
		{
			AssetBundleManager.Initialize();
			if (AssetBundleManager.m_Instance)
			{
				if (string.IsNullOrEmpty(assetBundleName) || string.IsNullOrEmpty(assetName))
				{
					Debug.LogError("## Empty bundle or asset name: assetBundleName=" + assetBundleName + ", assetName=" + assetName);
					return false;
				}
				AssetBundleLoadAssetOperation assetBundleLoadAssetOperation = AssetBundleManager.LoadAssetAsync(assetBundleName, assetName, typeof(T));
				if (assetBundleLoadAssetOperation != null)
				{
					if (!AssetBundleManager.m_PendingRoutines.ContainsKey(onAssetLoaded))
					{
						Coroutine value = AssetBundleManager.m_Instance.StartCoroutine(AssetBundleManager.LoadAssetAsyncCallbackRoutine<T>(assetBundleName, assetBundleLoadAssetOperation, onAssetLoaded));
						AssetBundleManager.m_PendingRoutines.Add(onAssetLoaded, value);
					}
					return true;
				}
			}
			return false;
		}