using System.Collections; using Convention; using Demo.Editor.UI; using UnityEngine; namespace Demo.Game { public class SkyUpdatement : Updatement, IAssetBundleLoader { public static SkyUpdatement Make() { return new GameObject().AddComponent(); } 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(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(); } /// /// 对应ab包名称,自动匹配对应平台 /// /// [Convention.RScript.Variable.Attr.Method] public IEnumerator Load(string ab) { yield return this.LoadAssetBundle(ab, x => { SkyAssetBundlePath = ab; SkyAssetBundle = x; }); } /// /// 在指定时刻切换天空 /// /// /// [Convention.RScript.Variable.Attr.Method] public void Add(string time, string sky) { ManualAddEntry(time, sky, default); } /// /// 在指定时刻切换天空 /// /// /// [Convention.RScript.Variable.Attr.Method] public void Add(float time, string sky) { ManualAddEntry(time, sky, default); } } }