| | |
| | | using System.Collections;
|
| | | using Snxxz.UI;
|
| | | using System;
|
| | |
|
| | | using System.Collections.Generic;
|
| | | using System.IO;
|
| | |
|
| | | using System.Diagnostics;
|
| | |
|
| | | public class Launch : MonoBehaviour
|
| | | {
|
| | |
| | | #if !UNITY_EDITOR
|
| | | tasks.Enqueue(assetCopyTask);
|
| | | #endif
|
| | | #endif
|
| | |
|
| | | #if UNITY_STANDALONE
|
| | | #if !UNITY_EDITOR
|
| | | tasks.Enqueue(assetCopyTask);
|
| | | #endif
|
| | | tasks.Enqueue(getVersionInfoTask);
|
| | | #endif
|
| | |
|
| | | tasks.Enqueue(checkAssetValidTask);
|
| | |
| | |
|
| | | if (launchComplete)
|
| | | {
|
| | | Debug.LogFormat("启动耗时:{0}", timer);
|
| | | UnityEngine.Debug.LogFormat("启动耗时:{0}", timer);
|
| | | progressInfo = new ProgressInfo(m_CurrentStage, 1, 1f, 1f);
|
| | | this.enabled = false;
|
| | | StageLoad.Instance.PushSceneLoadCommand(new StageLoad.StageLoadCommand()
|
| | |
| | | {
|
| | | duration = Mathf.Max(0.1f, expectTime);
|
| | |
|
| | | #if UNITY_ANDROID && !UNITY_EDITOR
|
| | | if (!SDKUtility.builtinAssetCopyFinished)
|
| | | {
|
| | | firstLaunch=true;
|
| | | SDKUtility.Instance.CopyOneAsset("builtin_assetbundle.7z");
|
| | | SDKUtility.Instance.CopyOneAsset("builtin_assetbundle.manifest.7z");
|
| | | SDKUtility.Instance.CopyOneAsset("builtin/musics.7z");
|
| | | SDKUtility.Instance.CopyOneAsset("builtin/musics.manifest.7z");
|
| | | SDKUtility.Instance.CopyOneAsset("builtin/prefabs.7z");
|
| | | SDKUtility.Instance.CopyOneAsset("builtin/prefabs.manifest.7z");
|
| | | SDKUtility.Instance.CopyOneAsset("builtin/sprites.7z");
|
| | | SDKUtility.Instance.CopyOneAsset("builtin/sprites.manifest.7z");
|
| | | SDKUtility.Instance.CopyOneAsset("builtin/animationclips.7z");
|
| | | SDKUtility.Instance.CopyOneAsset("builtin/animationclips.manifest.7z");
|
| | | SDKUtility.Instance.CopyOneAsset("builtin/materials.7z");
|
| | | SDKUtility.Instance.CopyOneAsset("builtin/materials.manifest.7z");
|
| | | SDKUtility.Instance.CopyOneAsset("builtin/scriptableobjects.7z");
|
| | | SDKUtility.Instance.CopyOneAsset("builtin/scriptableobjects.manifest.7z");
|
| | | if (Application.isEditor)
|
| | | {
|
| | | EditorCopyAsset();
|
| | | }
|
| | | else
|
| | | {
|
| | | AndroidCopyAsset();
|
| | | IosCopyAsset();
|
| | | StandaloneCopyAsset();
|
| | | }
|
| | |
|
| | | SDKUtility.Instance.CopyOneAsset("config/Contact.txt.7z");
|
| | | SDKUtility.Instance.CopyOneAsset("config/HelpInfo.txt.7z");
|
| | | SDKUtility.Instance.CopyOneAsset("config/PriorBundle.txt.7z");
|
| | | SDKUtility.Instance.CopyOneAsset("config/PriorLanguage.txt.7z");
|
| | | SDKUtility.Instance.CopyOneAsset("config/ApkUpdateUrl.txt.7z");
|
| | |
|
| | | AssetDeCompressTask.Decompress(ResourcesPath.Instance.ExternalStorePath);
|
| | | LocalSave.SetString("BuiltInAssetCopyCompleted_Android", VersionConfig.Get().version);
|
| | | if (!firstLaunch)
|
| | | {
|
| | | done = true;
|
| | | }
|
| | | }
|
| | | #endif
|
| | |
|
| | | #if UNITY_IOS && !UNITY_EDITOR
|
| | | if (!VersionUtility.Instance.InIosAuditTime())
|
| | | public override void End()
|
| | | {
|
| | | if (!AssetSource.builtInFromEditor)
|
| | | {
|
| | | AssetBundleUtility.Instance.InitBuiltInAsset();
|
| | | }
|
| | |
|
| | | ConfigInitiator.SyncInit();
|
| | | WindowCenter.Instance.DestoryWinsByStage(WindowCenter.WindowStage.Launch);
|
| | | AssetBundleUtility.Instance.UnloadAssetBundle("builtin/prefabs", true, false);
|
| | | WindowCenter.Instance.OpenFromLocal<LaunchWin>();
|
| | | }
|
| | |
|
| | | public override void Update()
|
| | | {
|
| | | if (done)
|
| | | {
|
| | | return;
|
| | | }
|
| | |
|
| | | if (timer > duration)
|
| | | {
|
| | | done = true;
|
| | | }
|
| | | else
|
| | | {
|
| | | done = false;
|
| | | progress = timer / duration;
|
| | | }
|
| | |
|
| | | timer += Time.deltaTime;
|
| | | }
|
| | |
|
| | | [Conditional("UNITY_ANDROID")]
|
| | | private void AndroidCopyAsset()
|
| | | {
|
| | | if (!SDKUtility.builtinAssetCopyFinished)
|
| | | { |
| | | firstLaunch=true;
|
| | | {
|
| | | firstLaunch = true;
|
| | | SDKUtility.Instance.CopyOneAsset("builtin_assetbundle.7z");
|
| | | SDKUtility.Instance.CopyOneAsset("builtin_assetbundle.manifest.7z");
|
| | | SDKUtility.Instance.CopyOneAsset("builtin/musics.7z");
|
| | | SDKUtility.Instance.CopyOneAsset("builtin/musics.manifest.7z");
|
| | | SDKUtility.Instance.CopyOneAsset("builtin/prefabs.7z");
|
| | | SDKUtility.Instance.CopyOneAsset("builtin/prefabs.manifest.7z");
|
| | | SDKUtility.Instance.CopyOneAsset("builtin/sprites.7z");
|
| | | SDKUtility.Instance.CopyOneAsset("builtin/sprites.manifest.7z");
|
| | | SDKUtility.Instance.CopyOneAsset("builtin/animationclips.7z");
|
| | | SDKUtility.Instance.CopyOneAsset("builtin/animationclips.manifest.7z");
|
| | | SDKUtility.Instance.CopyOneAsset("builtin/materials.7z");
|
| | | SDKUtility.Instance.CopyOneAsset("builtin/materials.manifest.7z");
|
| | | SDKUtility.Instance.CopyOneAsset("builtin/scriptableobjects.7z");
|
| | | SDKUtility.Instance.CopyOneAsset("builtin/scriptableobjects.manifest.7z");
|
| | |
|
| | | SDKUtility.Instance.CopyOneAsset("config/Contact.txt.7z");
|
| | | SDKUtility.Instance.CopyOneAsset("config/HelpInfo.txt.7z");
|
| | | SDKUtility.Instance.CopyOneAsset("config/PriorBundle.txt.7z");
|
| | | SDKUtility.Instance.CopyOneAsset("config/PriorLanguage.txt.7z");
|
| | | SDKUtility.Instance.CopyOneAsset("config/ApkUpdateUrl.txt.7z");
|
| | |
|
| | | AssetDeCompressTask.Decompress(ResourcesPath.Instance.ExternalStorePath);
|
| | | LocalSave.SetString("BuiltInAssetCopyCompleted_Android", VersionConfig.Get().version);
|
| | | }
|
| | | }
|
| | |
|
| | | [Conditional("UNITY_IOS")]
|
| | | private void IosCopyAsset()
|
| | | {
|
| | | if (!VersionUtility.Instance.InIosAuditTime())
|
| | | {
|
| | | if (!SDKUtility.builtinAssetCopyFinished)
|
| | | {
|
| | | firstLaunch = true;
|
| | | var targetDirectory = ResourcesPath.Instance.ExternalStorePath;
|
| | | if (!Directory.Exists(targetDirectory))
|
| | | {
|
| | | Directory.CreateDirectory(targetDirectory);
|
| | | }
|
| | |
|
| | | var fileNames = new List<string>();
|
| | | var files = new List<FileInfo>();
|
| | | FileExtersion.GetAllDirectoryFileInfos(StringUtility.Contact(ResourcesPath.Instance.StreamingAssetPath, "builtin"), files);
|
| | | foreach (var file in files)
|
| | | {
|
| | | var name = Path.GetFileName(file.FullName);
|
| | | fileNames.Add(StringUtility.Contact("builtin", Path.DirectorySeparatorChar, name));
|
| | | }
|
| | |
|
| | | fileNames.Add("builtin_assetbundle");
|
| | | fileNames.Add("builtin_assetbundle.manifest");
|
| | |
|
| | | var configFiles = new List<FileInfo>();
|
| | | FileExtersion.GetAllDirectoryFileInfos(StringUtility.Contact(ResourcesPath.Instance.StreamingAssetPath, "config"), configFiles);
|
| | | foreach (var file in configFiles)
|
| | | {
|
| | | var name = Path.GetFileName(file.FullName);
|
| | | fileNames.Add(StringUtility.Contact("config", Path.DirectorySeparatorChar, name));
|
| | | }
|
| | |
|
| | | foreach (var item in fileNames)
|
| | | {
|
| | | var fromPath = StringUtility.Contact(ResourcesPath.Instance.StreamingAssetPath, item);
|
| | | var toPath = StringUtility.Contact(targetDirectory, item);
|
| | |
|
| | | var destDirectoryName = Path.GetDirectoryName(toPath);
|
| | | if (!Directory.Exists(destDirectoryName))
|
| | | {
|
| | | Directory.CreateDirectory(destDirectoryName);
|
| | | }
|
| | |
|
| | | File.Copy(fromPath, toPath, true);
|
| | | }
|
| | |
|
| | | LocalSave.SetString("BuiltInAssetCopyCompleted_IOSorStandalone", VersionConfig.Get().version);
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | [Conditional("UNITY_STANDALONE")]
|
| | | private void StandaloneCopyAsset()
|
| | | {
|
| | | if (!SDKUtility.builtinAssetCopyFinished)
|
| | | {
|
| | | firstLaunch = true;
|
| | | var targetDirectory = ResourcesPath.Instance.ExternalStorePath;
|
| | | if (!Directory.Exists(targetDirectory))
|
| | | {
|
| | |
| | | File.Copy(fromPath, toPath, true);
|
| | | }
|
| | |
|
| | | LocalSave.SetString("BuiltInAssetCopyCompleted_IOS", VersionConfig.Get().version);
|
| | | LocalSave.SetString("BuiltInAssetCopyCompleted_IOSorStandalone", VersionConfig.Get().version);
|
| | | }
|
| | | }
|
| | | #endif
|
| | | #if UNITY_EDITOR
|
| | |
|
| | | [Conditional("UNITY_EDITOR")]
|
| | | private void EditorCopyAsset()
|
| | | {
|
| | | if (!AssetSource.allFromEditor)
|
| | | {
|
| | | FileExtersion.DirectoryCopy(ResourcesPath.CONFIG_FODLER, ResourcesPath.Instance.StreamingAssetPath + "config");
|
| | | FileExtersion.DirectoryCopy(ResourcesPath.ResourcesOutPath + "BuiltIn", ResourcesPath.Instance.StreamingAssetPath + "builtin");
|
| | | }
|
| | | #endif
|
| | | if (!firstLaunch)
|
| | | {
|
| | | done = true;
|
| | | }
|
| | | }
|
| | |
|
| | | public override void End()
|
| | | {
|
| | | if (!AssetSource.builtInFromEditor)
|
| | | {
|
| | | AssetBundleUtility.Instance.InitBuiltInAsset();
|
| | | }
|
| | |
|
| | | ConfigInitiator.SyncInit();
|
| | | WindowCenter.Instance.DestoryWinsByStage(WindowCenter.WindowStage.Launch);
|
| | | AssetBundleUtility.Instance.UnloadAssetBundle("builtin/prefabs", true, false);
|
| | | WindowCenter.Instance.OpenFromLocal<LaunchWin>();
|
| | | }
|
| | |
|
| | | public override void Update()
|
| | | {
|
| | | if (done)
|
| | | {
|
| | | return;
|
| | | }
|
| | |
|
| | | if (timer > duration)
|
| | | {
|
| | | done = true;
|
| | | }
|
| | | else
|
| | | {
|
| | | done = false;
|
| | | progress = timer / duration;
|
| | | }
|
| | |
|
| | | timer += Time.deltaTime;
|
| | | }
|
| | | }
|
| | |
|
| | | public class InitSettingTask : LaunchTask
|
| | | {
|
| | | public override float expectTime
|
| | | {
|
| | | public override float expectTime {
|
| | | get { return LocalSave.GetFloat("InitSettingTask_ExpectTime", 1f); }
|
| | | protected set { LocalSave.SetFloat("InitSettingTask_ExpectTime", value); }
|
| | | }
|
| | |
| | |
|
| | | public class SDKInitedTask : LaunchTask
|
| | | {
|
| | | public override float expectTime
|
| | | {
|
| | | public override float expectTime {
|
| | | get { return LocalSave.GetFloat("SDKInitedTask_ExpectTime", 1f); }
|
| | | protected set { LocalSave.SetFloat("SDKInitedTask_ExpectTime", value); }
|
| | | }
|
| | |
| | | int totalCount = -1;
|
| | | List<FileInfo> copyTasks = new List<FileInfo>();
|
| | |
|
| | | public override float expectTime
|
| | | {
|
| | | public override float expectTime {
|
| | | get { return LocalSave.GetFloat("AssetCopyTask_ExpectTime", 70f); }
|
| | | protected set { LocalSave.SetFloat("AssetCopyTask_ExpectTime", value); }
|
| | | }
|
| | |
| | | m_CurrentStage = LaunchStage.AssetCopy;
|
| | | duration = Mathf.Max(0.5f, expectTime);
|
| | | outTime = 50f;
|
| | | #if UNITY_ANDROID && !UNITY_EDITOR
|
| | |
|
| | | if (Application.isEditor)
|
| | | {
|
| | | done = true;
|
| | | }
|
| | | else
|
| | | {
|
| | | AndroidCopyAsset();
|
| | | IOSorStandaloneCopyAsset();
|
| | | }
|
| | | }
|
| | |
|
| | | public override void End()
|
| | | {
|
| | | expectTime = timer;
|
| | | DebugEx.LogFormat("{0}执行时长:{1};", this.GetType().Name, timer);
|
| | |
|
| | | if (!Application.isEditor)
|
| | | {
|
| | | AndroidProcessCopyComplete();
|
| | | IOSorStandaloneProcessCopyComplete();
|
| | | }
|
| | | }
|
| | |
|
| | | public override void Update()
|
| | | {
|
| | | if (done)
|
| | | {
|
| | | return;
|
| | | }
|
| | |
|
| | | timer += Time.deltaTime;
|
| | |
|
| | | if (!Application.isEditor)
|
| | | {
|
| | | AndroidWaitCopyAssetComplete();
|
| | | IOSorStandaloneWaitCopyAssetComplete();
|
| | | }
|
| | |
|
| | | ExceptionReport();
|
| | | }
|
| | |
|
| | | [Conditional("UNITY_ANDROID")]
|
| | | private void AndroidCopyAsset()
|
| | | {
|
| | | switch (VersionConfig.Get().assetAccess)
|
| | | {
|
| | | case InstalledAsset.FullAsset:
|
| | |
| | | done = true;
|
| | | break;
|
| | | }
|
| | | #endif
|
| | | }
|
| | |
|
| | | #if UNITY_IOS && !UNITY_EDITOR
|
| | | [Conditional("UNITY_IOS"), Conditional("UNITY_STANDALONE")]
|
| | | private void IOSorStandaloneCopyAsset()
|
| | | {
|
| | | if (VersionUtility.Instance.versionInfo != null && VersionUtility.Instance.versionInfo.downAsset == 1)
|
| | | {
|
| | | switch (VersionConfig.Get().assetAccess)
|
| | |
| | | {
|
| | | done = true;
|
| | | }
|
| | | #endif
|
| | |
|
| | | #if UNITY_EDITOR
|
| | | done = true;
|
| | | #endif
|
| | |
|
| | | }
|
| | |
|
| | | public override void End()
|
| | | [Conditional("UNITY_ANDROID")]
|
| | | private void AndroidWaitCopyAssetComplete()
|
| | | {
|
| | | expectTime = timer;
|
| | | DebugEx.LogFormat("{0}执行时长:{1};", this.GetType().Name, timer);
|
| | | #if UNITY_IOS && !UNITY_EDITOR
|
| | | LocalSave.SetString("AssetCopyCompleted_IOS", VersionConfig.Get().version);
|
| | | #endif
|
| | | }
|
| | |
|
| | | public override void Update()
|
| | | {
|
| | | if (done)
|
| | | {
|
| | | return;
|
| | | }
|
| | |
|
| | | timer += Time.deltaTime;
|
| | | #if UNITY_ANDROID && !UNITY_EDITOR
|
| | | if (!SDKUtility.Instance.AssetCopyFinished)
|
| | | {
|
| | | done = false;
|
| | |
| | | {
|
| | | done = true;
|
| | | }
|
| | | #endif
|
| | | }
|
| | |
|
| | | #if UNITY_IOS && !UNITY_EDITOR
|
| | | [Conditional("UNITY_IOS"), Conditional("UNITY_STANDALONE")]
|
| | | private void IOSorStandaloneWaitCopyAssetComplete()
|
| | | {
|
| | | if (totalCount > 0)
|
| | | {
|
| | | if (completedCount < totalCount)
|
| | |
| | | done = true;
|
| | | }
|
| | |
|
| | | #endif
|
| | | ExceptionReport();
|
| | | }
|
| | |
|
| | | [Conditional("UNITY_ANDROID")]
|
| | | private void AndroidProcessCopyComplete()
|
| | | {
|
| | | }
|
| | |
|
| | | [Conditional("UNITY_IOS"), Conditional("UNITY_STANDALONE")]
|
| | | private void IOSorStandaloneProcessCopyComplete()
|
| | | {
|
| | | LocalSave.SetString("AssetCopyCompleted_IOSorStandalone", VersionConfig.Get().version);
|
| | | }
|
| | |
|
| | | }
|
| | |
|
| | | public class AssetDecompressTask : LaunchTask
|
| | | {
|
| | | public override float expectTime
|
| | | {
|
| | | public override float expectTime {
|
| | | get { return LocalSave.GetFloat("AssetDecompressTask_ExpectTime", 5f); }
|
| | | protected set { LocalSave.SetFloat("AssetDecompressTask_ExpectTime", value); }
|
| | | }
|
| | |
| | |
|
| | | public class GetVersionInfoTask : LaunchTask
|
| | | {
|
| | | public override float expectTime
|
| | | {
|
| | | public override float expectTime {
|
| | | get { return LocalSave.GetFloat("GetVersionInfoTask_ExpectTime", 1f); }
|
| | | protected set { LocalSave.SetFloat("GetVersionInfoTask_ExpectTime", value); }
|
| | | }
|
| | |
| | | m_CurrentStage = LaunchStage.ClientVersion;
|
| | | duration = Mathf.Max(0.5f, expectTime);
|
| | |
|
| | | #if UNITY_ANDROID
|
| | | if (InGameDownTestUtility.enable || !Application.isEditor)
|
| | | if (Application.isEditor)
|
| | | {
|
| | | VersionUtility.Instance.RequestVersionCheck();
|
| | | done = false;
|
| | | progress = 0f;
|
| | | if (InGameDownTestUtility.enable)
|
| | | {
|
| | | VersionUtility.Instance.RequestVersionCheck();
|
| | | done = false;
|
| | | progress = 0f;
|
| | | }
|
| | | else
|
| | | {
|
| | | done = true;
|
| | | }
|
| | | }
|
| | | else
|
| | | {
|
| | | done = true;
|
| | | if (!VersionUtility.Instance.InIosAuditTime())
|
| | | {
|
| | | VersionUtility.Instance.RequestVersionCheck();
|
| | | done = false;
|
| | | progress = 0f;
|
| | | }
|
| | | else
|
| | | {
|
| | | done = true;
|
| | | }
|
| | | }
|
| | | #endif
|
| | |
|
| | | #if UNITY_IOS
|
| | | if (!VersionUtility.Instance.InIosAuditTime())
|
| | | {
|
| | | VersionUtility.Instance.RequestVersionCheck();
|
| | | done = false;
|
| | | progress = 0f;
|
| | | }
|
| | | else
|
| | | {
|
| | | done = true;
|
| | | }
|
| | | #endif
|
| | | }
|
| | |
|
| | | public override void End()
|
| | |
| | |
|
| | | public class CheckAssetValidTask : LaunchTask
|
| | | {
|
| | | public override float expectTime
|
| | | {
|
| | | public override float expectTime {
|
| | | get { return LocalSave.GetFloat("CheckAssetValidTask_ExpectTime", 3f); }
|
| | | protected set { LocalSave.SetFloat("CheckAssetValidTask_ExpectTime", value); }
|
| | | }
|
| | |
| | |
|
| | | public class DownLoadAssetTask : LaunchTask
|
| | | {
|
| | | public override float expectTime
|
| | | {
|
| | | public override float expectTime {
|
| | | get { return LocalSave.GetFloat("DownLoadAssetTask_ExpectTime", 3f); }
|
| | | protected set { LocalSave.SetFloat("DownLoadAssetTask_ExpectTime", value); }
|
| | | }
|
| | |
| | |
|
| | | public class AssetBundleInitTask : LaunchTask
|
| | | {
|
| | | public override float expectTime
|
| | | {
|
| | | public override float expectTime {
|
| | | get { return LocalSave.GetFloat("AssetBundleInitTask_ExpectTime", 1f); }
|
| | | protected set { LocalSave.SetFloat("AssetBundleInitTask_ExpectTime", value); }
|
| | | }
|
| | |
| | |
|
| | | public class ConfigInitTask : LaunchTask
|
| | | {
|
| | | public override float expectTime
|
| | | {
|
| | | public override float expectTime {
|
| | | get { return LocalSave.GetFloat("ConfigInitTask_ExpectTime", 10f); }
|
| | | protected set { LocalSave.SetFloat("ConfigInitTask_ExpectTime", value); }
|
| | | }
|
| | |
| | |
|
| | | public class LaunchFadeOutTask : LaunchTask
|
| | | {
|
| | | public override float expectTime
|
| | | {
|
| | | public override float expectTime {
|
| | | get { return LocalSave.GetFloat("LaunchFadeOutTask_ExpectTime", 1f); }
|
| | | protected set { LocalSave.SetFloat("LaunchFadeOutTask_ExpectTime", value); }
|
| | | }
|