Unity Addressables学习笔记(2)---创建远程服务器对象

1.先创建对象

我的做法是:

  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()
    {
    
    

    }

}

结尾:启动SpringBoot的WEB服务之后,然后直接在Unity里启动或者Build And Run就出效果了

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/lwb314/article/details/130792661