facebook twitter hatena line email

「Unity/Addressable/シーンロード」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(シーンをロード)
(シーンをロード)
行8: 行8:
 
==シーンをロード==
 
==シーンをロード==
 
<pre>
 
<pre>
public class SampleScene : MonoBehaviour
+
using System.Collections;
 +
using UnityEngine;
 +
using UnityEngine.UI;
 +
using UnityEngine.AddressableAssets;
 +
using UnityEngine.ResourceManagement.AsyncOperations;
 +
using UnityEngine.ResourceManagement.ResourceProviders;
 +
 
 +
public class SceneLoadScene : MonoBehaviour
 
{
 
{
 
     [SerializeField]
 
     [SerializeField]
 
     Button loadButton;
 
     Button loadButton;
 +
    [SerializeField]
 +
    Button unloadButton;
 +
    AsyncOperationHandle<SceneInstance> handle;
 
     void Start()
 
     void Start()
 
     {
 
     {
 
         loadButton.onClick.AddListener(() => {
 
         loadButton.onClick.AddListener(() => {
                StartCoroutine(LoadScene());
+
            StartCoroutine(LoadScene());
 +
        });
 +
        unloadButton.onClick.AddListener(() => {
 +
            Addressables.UnloadSceneAsync(handle);
 
         });
 
         });
 
     }
 
     }
 
     IEnumerator LoadScene()
 
     IEnumerator LoadScene()
 
     {
 
     {
         var handle = Addressables.LoadSceneAsync("Assets/Scenes/SceneLoadSample2Scene.unity", UnityEngine.SceneManagement.LoadSceneMode.Additive);
+
         handle = Addressables.LoadSceneAsync("Assets/Scenes/SceneLoadSample2Scene.unity", UnityEngine.SceneManagement.LoadSceneMode.Additive);
 
         yield return handle;
 
         yield return handle;
 
     }
 
     }

2022年9月7日 (水) 18:52時点における版

シーンを作成してAddressable登録

  1. Project内でSceneを作成する
  2. Sceneを選択し、Inspectorで、Addressableにチェックを付ける
  3. Addressableをビルドする(Unityメインメニュー/Window/Asset Management/Addressables/Groups/Build/New Build/Default Build Script

参考:https://soft-rime.com/post-3267/

シーンをロード

using System.Collections;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.AddressableAssets;
using UnityEngine.ResourceManagement.AsyncOperations;
using UnityEngine.ResourceManagement.ResourceProviders;

public class SceneLoadScene : MonoBehaviour
{
    [SerializeField]
    Button loadButton;
    [SerializeField]
    Button unloadButton;
    AsyncOperationHandle<SceneInstance> handle;
    void Start()
    {
        loadButton.onClick.AddListener(() => {
            StartCoroutine(LoadScene());
        });
        unloadButton.onClick.AddListener(() => {
            Addressables.UnloadSceneAsync(handle);
        });
    }
    IEnumerator LoadScene()
    {
        handle = Addressables.LoadSceneAsync("Assets/Scenes/SceneLoadSample2Scene.unity", UnityEngine.SceneManagement.LoadSceneMode.Additive);
        yield return handle;
    }
}

参考:https://light11.hatenadiary.com/entry/2019/12/30/222302