前言
Unity Addressables學習筆記—匯總
正文
1.創(chuàng)建一個新場景
我是創(chuàng)建在Resources/Scenes目錄下,如圖:
2.為場景創(chuàng)建一個Addressables的Group
Game1Group就是我新創(chuàng)建的一個Group用來存放場景1的所有資源,分組的配置跟Remote一樣,都是遠程的,加載地址是我本地啟動的web服務器地址,URL里WebGL那個目錄也不是必須的,根據(jù)自己實際的來。
3.把新場景和場景里用到的資源全部拖入到Game1Group里
上邊的圖就是拖完的狀態(tài)。
4.在初始化的場景里添加代碼,用Addressables的方式加載新的場景Game1.
我是在最開始的場景里圖片1那個開始按鈕上加了個點擊事件去觸發(fā)加載Game1這個場景的
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.ResourceManagement.AsyncOperations;
using UnityEngine.UI;
public class GameController : MonoBehaviour
{
private Sprite sprite;
public Button btn;
public List<string> list;
void Start()
{
//Addressables.Instantiate("Play Button").Result.transform.position = new Vector3(2f, 2f);
foreach (string name in list)
{
Addressables.LoadAssetAsync<GameObject>(name).Completed += SpriteLoadedObj;
}
//PlayerPrefs.DeleteKey(Addressables.kAddressablesRuntimeDataPath);
Addressables.LoadAssetAsync<Sprite>("Play Button Img").Completed += SpriteLoaded;
}
private void SpriteLoaded(AsyncOperationHandle<Sprite> obj)
{
switch (obj.Status)
{
case AsyncOperationStatus.Succeeded:
sprite = obj.Result;
Debug.Log(sprite);
btn.image.sprite = sprite;
break;
case AsyncOperationStatus.Failed:
Debug.LogError("Sprite load failed.");
break;
default:
//case AsyncOperationStatus.None:
break;
}
}
private void SpriteLoadedObj(AsyncOperationHandle<GameObject> obj)
{
switch (obj.Status)
{
case AsyncOperationStatus.Succeeded:
GameObject a = Instantiate(obj.Result);
a.transform.position = new Vector2(2f, 2f);
break;
case AsyncOperationStatus.Failed:
Debug.LogError("Sprite load failed.");
break;
default:
//case AsyncOperationStatus.None:
break;
}
}
// Update is called once per frame
void Update()
{
}
public void onClick()
{
Addressables.LoadSceneAsync("Game1");
}
}
5.場景1:用Addressables創(chuàng)建一個對象,在Hierarchy里拖進去一個對象,一共2個對象
下邊是場景1拖進去的一個對象
下邊是GameObject上隨便綁定一個C#腳本再去創(chuàng)建一個對象
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.ResourceManagement.AsyncOperations;
public class Game1Controller : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
Addressables.LoadAssetAsync<GameObject>("Layer 10").Completed += SpriteLoadedObj;
}
// Update is called once per frame
private void SpriteLoadedObj(AsyncOperationHandle<GameObject> obj)
{
switch (obj.Status)
{
case AsyncOperationStatus.Succeeded:
GameObject a = Instantiate(obj.Result);
a.transform.position = new Vector2(2f, 2f);
break;
case AsyncOperationStatus.Failed:
Debug.LogError("Sprite load failed.");
break;
default:
//case AsyncOperationStatus.None:
break;
}
}
}
6.重點:是用Addressables加載遠程場景,所以這個場景不要在build的時候一起打包進去,下圖只有一個初始場景沒有Game1場景。
7.用Addressables打包,然后把ServerData下的文件都拷貝到Web服務器上,不知道說什么看前2個筆記。然后直接Unity Build And Run,效果圖:
進入初始化場景:
文章來源:http://www.zghlxwxcb.cn/news/detail-823021.html
點擊小綠按鈕,進入場景2(例子里的場景名:Game1),2個對象一個是Game1場景里拖到Hierarchy里的預制體,一個是用C#代碼通過Addressables創(chuàng)建的對象,都出來了!
文章來源地址http://www.zghlxwxcb.cn/news/detail-823021.html
到了這里,關于Unity Addressables學習筆記(3)---加載遠程場景Scenes的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!