Я использую адресуемые ресурсы для удаленной загрузки новой сцены с сервера. Я пытаюсь активировать кнопку воспроизведения, если адресуемая сцена уже загружена и находится в кеше, и кнопку загрузки, если ее нет. в кеше, так что игрок не будет загружать адрес с сервера каждый раз, когда хочет воспроизвести сцену.
Я пытался использовать Caching. IsVersionCached
чтобы проверить, что пакет находится в кеше, используя имя пакета, но проблема здесь в том, что имя не является хорошей ссылкой, так как в адресуемой системе я загружаю сцену, используя Addressable. loadscene
, который загружает сцену напрямую, без ссылки на пакет ресурсов. поэтому вопрос в том, как проверить, кэширована ли сцена?
Вот то, что я пробовал, но это не работает, так как я уже знаю, что имя пакета активов не будет хорошей ссылкой, по крайней мере, в этом примере.
private IEnumerator LoadRoutine()
{
var lastHash = PlayerPrefs.GetString(LAST_HASH);
if (Caching.IsVersionCached(AssetBundleHavingTheScene.name, Hash128.Parse(lastHash)))
{
Debug.Log("The Bundle is Cached i'll launch it");
Addressables.LoadScene(AddressableScene);
}
else
{
Debug.Log("Not Cached I'm going to download it");
var async = Addressables.LoadScene(AddressableScene);
while (!async.IsDone)
{
ProgressNumber.text = (async.PercentComplete * 100f).ToString("F0") + ("%");
ProgressSlider.value = async.PercentComplete;
Debug.Log(async.PercentComplete);
yield return null;
}
// At this point the scene is loaded and referenced in async.Result
Debug.Log("LOADED!");
Scene myScene = async.Result;
}
}