Update editor simulate mode parameters

更新编辑器下模拟模式的初始化参数类
pull/9/head
hevinci 2022-05-07 19:20:52 +08:00
parent 6dd1eee6c3
commit ecd4973948
3 changed files with 30 additions and 11 deletions

View File

@ -21,42 +21,53 @@ namespace YooAsset
{
None,
Builder,
Load,
Done,
}
private readonly EditorSimulateModeImpl _impl;
private string _simulatePatchManifestPath;
private ESteps _steps = ESteps.None;
internal EditorSimulateModeInitializationOperation(EditorSimulateModeImpl impl)
internal EditorSimulateModeInitializationOperation(EditorSimulateModeImpl impl, string simulatePatchManifestPath)
{
_impl = impl;
_simulatePatchManifestPath = simulatePatchManifestPath;
}
internal override void Start()
{
if (string.IsNullOrEmpty(_simulatePatchManifestPath))
_steps = ESteps.Builder;
else
_steps = ESteps.Load;
}
internal override void Update()
{
if (_steps == ESteps.Builder)
{
string manifestFilePath = EditorSimulateModeHelper.SimulateBuild();
if (string.IsNullOrEmpty(manifestFilePath))
_simulatePatchManifestPath = EditorSimulateModeHelper.SimulateBuild();
if (string.IsNullOrEmpty(_simulatePatchManifestPath))
{
_steps = ESteps.Done;
Status = EOperationStatus.Failed;
Error = "Simulate build failed, see the detail info on the console window.";
return;
}
if (File.Exists(manifestFilePath) == false)
_steps = ESteps.Load;
}
if (_steps == ESteps.Load)
{
if (File.Exists(_simulatePatchManifestPath) == false)
{
_steps = ESteps.Done;
Status = EOperationStatus.Failed;
Error = $"Manifest file not found : {manifestFilePath}";
Error = $"Manifest file not found : {_simulatePatchManifestPath}";
return;
}
YooLogger.Log($"Load manifest file : {manifestFilePath}");
string jsonContent = FileUtility.ReadFile(manifestFilePath);
YooLogger.Log($"Load manifest file : {_simulatePatchManifestPath}");
string jsonContent = FileUtility.ReadFile(_simulatePatchManifestPath);
var simulatePatchManifest = PatchManifest.Deserialize(jsonContent);
_impl.SetSimulatePatchManifest(simulatePatchManifest);
_steps = ESteps.Done;

View File

@ -12,10 +12,10 @@ namespace YooAsset
/// <summary>
/// 异步初始化
/// </summary>
public InitializationOperation InitializeAsync(bool locationToLower)
public InitializationOperation InitializeAsync(bool locationToLower, string simulatePatchManifestPath)
{
_locationToLower = locationToLower;
var operation = new EditorSimulateModeInitializationOperation(this);
var operation = new EditorSimulateModeInitializationOperation(this, simulatePatchManifestPath);
OperationSystem.ProcessOperaiton(operation);
return operation;
}

View File

@ -66,6 +66,11 @@ namespace YooAsset
/// </summary>
public class EditorSimulateModeParameters : CreateParameters
{
/// <summary>
/// 用于模拟运行的资源清单路径
/// 注意:如果路径为空,会自动重新构建补丁清单。
/// </summary>
public string SimulatePatchManifestPath;
}
/// <summary>
@ -187,7 +192,10 @@ namespace YooAsset
_editorSimulateModeImpl = new EditorSimulateModeImpl();
_bundleServices = _editorSimulateModeImpl;
AssetSystem.Initialize(true, parameters.AssetLoadingMaxNumber, parameters.DecryptionServices, _bundleServices);
initializeOperation = _editorSimulateModeImpl.InitializeAsync(parameters.LocationToLower);
var editorSimulateModeParameters = parameters as EditorSimulateModeParameters;
initializeOperation = _editorSimulateModeImpl.InitializeAsync(
editorSimulateModeParameters.LocationToLower,
editorSimulateModeParameters.SimulatePatchManifestPath);
}
else if (_playMode == EPlayMode.OfflinePlayMode)
{