Files
Convention-Unity-Demo/Assets/Scripts/Environment/SkyUpdatement.cs

89 lines
2.3 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System.Collections;
using Convention;
using Demo.Editor.UI;
using UnityEngine;
namespace Demo.Game
{
public class SkyUpdatement : Updatement<string>, IAssetBundleLoader
{
public static SkyUpdatement Make()
{
return new GameObject().AddComponent<SkyUpdatement>();
}
public string SkyAssetBundlePath;
private IEnumerator SkyAssetBundleLoading;
public AssetBundle SkyAssetBundle;
protected override string Lerp(string begin, string end, float t)
{
return begin;
}
[Content, SerializeField] private string Cache;
protected override void UpdateData(string data)
{
if (string.IsNullOrEmpty(SkyAssetBundlePath))
return;
if (Cache != data)
{
RenderSettings.skybox = SkyAssetBundle.LoadAsset<Material>(data);
Cache = data;
}
}
public override IEnumerator LoadScript(string script)
{
yield return base.LoadScript(script);
yield return SkyAssetBundleLoading;
}
public override IEnumerator UnloadScript()
{
Cache = null;
if (string.IsNullOrEmpty(SkyAssetBundlePath) == false)
yield return this.UnloadAssetBundle(SkyAssetBundlePath);
SkyAssetBundlePath = "";
yield return base.UnloadScript();
}
/// <summary>
/// 对应ab包名称自动匹配对应平台
/// </summary>
/// <param name="ab"></param>
[ScriptableCall(@"
<summary>
对应ab包名称自动匹配对应平台
</summary>
<param name=""ab""></param>
")]
public IEnumerator Load(string ab)
{
yield return this.LoadAssetBundle(ab, x =>
{
SkyAssetBundlePath = ab;
SkyAssetBundle = x;
});
}
/// <summary>
/// 在指定时刻切换天空
/// </summary>
/// <param name="time"></param>
/// <param name="sky"></param>
[ScriptableCall(@"
<summary>
在指定时刻切换天空
</summary>
<param name=""time""></param>
<param name=""sky""></param>
")]
public void Add(string time, string sky)
{
ManualAddEntry(time, sky, default);
}
}
}