1.先创建对象
我的做法是:
- 先拖动一张图片到Resources/img下就是我选中的这张文件夹
2.把图片拖动到Hierarchy里变成一个对象,再把对象拖动到Resources/prefabs里,图片里的单词敲错了哈哈哈哈。
这样这个图片就变成了预制体,然后把Hierarchy里的实例删除通过C#代码用Addressables的方式创建对象。
3.把图片和预制体分别拖到我创建的addressables分组里,名字是Remote
打包到并放到SpringBoot下边
Remote分组的设置
在本地项目目录下会生成一个ServerData文件夹,这个文件夹不会在Unity的编辑器里显示,自己去目录下找,下边是我自己的目录截图
下边是放到SpringBoot的WebGL下边,具体的去看我的第一篇帖子里边有对应SpringBoot的设置,如果自己有Tomcat什么的也可以。
第一篇帖子:Unity Addressables学习笔记(1)—创建远程服务器加载资源
这3个文件就是我生成的3个,额其中一个应该是我下一个帖子里的,反正都拷贝过去就行了
代码
list里就是我要加载对象的名字,根据上边截图我加载的是Layer 1和Layer 8
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()
{
}
}