using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using System.IO;
|
using System;
|
|
|
public class BuiltInAssetCopyTask : LaunchTask
|
{
|
bool firstLaunch = false;
|
|
public override void Begin()
|
{
|
duration = Mathf.Max(0.2f, expectTime); //非安卓平台的时间,安卓由sdk拷贝完成回调
|
|
if (Application.isEditor)
|
{
|
EditorCopyAsset();
|
}
|
else
|
{
|
//安卓每次由sdk回调拷贝成功,其他平台由unity自己存储标记
|
switch (Application.platform)
|
{
|
case RuntimePlatform.Android:
|
AndroidCopyAsset();
|
break;
|
case RuntimePlatform.IPhonePlayer:
|
IosCopyAsset();
|
break;
|
case RuntimePlatform.WindowsPlayer:
|
StandaloneCopyAsset();
|
break;
|
}
|
}
|
|
if (!firstLaunch)
|
{
|
done = true;
|
}
|
}
|
|
public override void End()
|
{
|
if (!AssetSource.builtInFromEditor)
|
{
|
AssetBundleUtility.Instance.InitBuiltInAsset();
|
}
|
// TODO YYL
|
// ConfigInitiator.SyncInit();
|
// WindowCenter.Instance.DestoryWinsByStage(WindowCenter.WindowStage.Launch);
|
// WindowCenter.Instance.OpenFromLocal<LaunchWin>();
|
Language.InitDefaultLanguage();
|
}
|
|
public override void Update()
|
{
|
if (done)
|
{
|
return;
|
}
|
if (!Application.isEditor)
|
{
|
//安卓每次由sdk回调拷贝成功,其他平台由unity自己存储标记
|
if (Application.platform == RuntimePlatform.Android)
|
{
|
AndroidWaitCopyAssetComplete();
|
}
|
else
|
{
|
if (timer > duration)
|
{
|
done = true;
|
}
|
else
|
{
|
done = false;
|
progress = timer / duration;
|
}
|
}
|
}
|
|
|
timer += Time.deltaTime;
|
}
|
|
|
private void AndroidWaitCopyAssetComplete()
|
{
|
if (!SDKUtils.Instance.AssetCopyFinished)
|
{
|
done = false;
|
progress = timer / duration;
|
}
|
else
|
{
|
done = true;
|
}
|
}
|
|
|
private void AndroidCopyAsset()
|
{
|
if (!SDKUtils.Instance.AssetCopyFinished)
|
{
|
//每次由sdk回调拷贝成功
|
firstLaunch = true;
|
UnityEngine.Debug.Log("开始拷贝builtin资源");
|
SDKUtils.Instance.CopyAsset(1);
|
//ynmbxxjUtil.Instance.CopyOneAsset("builtin_assetbundle");
|
//ynmbxxjUtil.Instance.CopyOneAsset("builtin_assetbundle.manifest");
|
//ynmbxxjUtil.Instance.CopyOneAsset("builtin/musics");
|
//ynmbxxjUtil.Instance.CopyOneAsset("builtin/musics.manifest");
|
//ynmbxxjUtil.Instance.CopyOneAsset("builtin/prefabs");
|
//ynmbxxjUtil.Instance.CopyOneAsset("builtin/prefabs.manifest");
|
//ynmbxxjUtil.Instance.CopyOneAsset("builtin/sprites");
|
//ynmbxxjUtil.Instance.CopyOneAsset("builtin/sprites.manifest");
|
//ynmbxxjUtil.Instance.CopyOneAsset("builtin/animationclips");
|
//ynmbxxjUtil.Instance.CopyOneAsset("builtin/animationclips.manifest");
|
//ynmbxxjUtil.Instance.CopyOneAsset("builtin/materials");
|
//ynmbxxjUtil.Instance.CopyOneAsset("builtin/materials.manifest");
|
//ynmbxxjUtil.Instance.CopyOneAsset("builtin/scriptableobjects");
|
//ynmbxxjUtil.Instance.CopyOneAsset("builtin/scriptableobjects.manifest");
|
|
//ynmbxxjUtil.Instance.CopyOneAsset("builtin/font");
|
//ynmbxxjUtil.Instance.CopyOneAsset("builtin/font.manifest");
|
|
//foreach (var config in ConfigInitiator.builtinConfig)
|
//{
|
// ynmbxxjUtil.Instance.CopyOneAsset("config/" + config);
|
//}
|
|
//AssetDeCompressTask.Decompress(ResourcesPath.Instance.ExternalStorePath);
|
//LocalSave.SetString("BuiltInAssetCopyCompleted_Android", VersionConfig.Get().version);
|
}
|
else
|
UnityEngine.Debug.Log("builtin资源已经拷贝过了");
|
}
|
|
private void IosCopyAsset()
|
{
|
if (!VersionUtility.Instance.InIosAuditTime())
|
{
|
if (!SDKUtils.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);
|
}
|
}
|
}
|
|
private void StandaloneCopyAsset()
|
{
|
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);
|
|
if (File.Exists(toPath))
|
{
|
continue;
|
}
|
|
var destDirectoryName = Path.GetDirectoryName(toPath);
|
if (!Directory.Exists(destDirectoryName))
|
{
|
Directory.CreateDirectory(destDirectoryName);
|
}
|
|
File.Copy(fromPath, toPath, true);
|
}
|
}
|
|
private void EditorCopyAsset()
|
{
|
if (!AssetSource.allFromEditor)
|
{
|
// FileExtersion.DirectoryCopy(ResourcesPath.CONFIG_FODLER, ResourcesPath.Instance.StreamingAssetPath + "config");
|
// FileExtersion.DirectoryCopy(ResourcesPath.ResourcesOutPath + "BuiltIn", ResourcesPath.Instance.StreamingAssetPath + "builtin");
|
}
|
}
|
|
}
|