设为首页
收藏本站
开启辅助访问
切换到窄版
登录
立即注册
只需一步,快速开始
首页
BBS
剑灵怀旧服
Unity
美术资源
UE
全套源码
其他内容
奖励任务
分享
Share
每日任务中心
搜索
搜索
怀旧插件
怀旧脚本数据
怀旧攻略
公益服开服通知
AI工具分享
Unity插件
Unity问题答疑
Unity学习教程
Unity AI算法
Unity源码
其他美术文件
MAY文件
3D Max
FBX模型
UE技术讨论
UE学习视频
UE源码
网站源代码
手机游戏源代码
PC游戏
游戏捏脸
其他插件
OFFER摸吧
魔兽地图
单机游戏
本版
帖子
用户
爱开源网
»
首页
›
前端中台
›
Unity
›
Unity3d C# 实现AA包(Addressables)资源热更新的多个包 ...
返回列表
发新帖
[Unity学习教程]
Unity3d C# 实现AA包(Addressables)资源热更新的多个包异步加载并显示加载
[复制链接]
1227
|
0
|
2023-8-23 12:12:07
|
显示全部楼层
|
阅读模式
来自
中国北京
媒介
该功能的aa包是本地包,我这边项目标需求就是将沙盘的多场景在程序初始化的时间将全部场景实例化,不使用动态加载的方式,必然会造成程序运行的装备的负载加大,不外特定的需求就是在切换场景的过程更丝滑(如不消转圈等候)。
如果对使用统一可寻址资产系统(Addressables)还不认识的,可以查察我之前写的两篇博客:
Unity3d 使用统一可寻址资产系统(Addressables)入门学习保姆级教程(含工程)
Unity3d 使用统一可寻址资产系统(Addressables)实现服务器资源热更新和资源版本管理等功能(含源码)
我这边使用的版本是Unity3d 2020.3.12f1c1 和 Addressables 1.20.0。不同版本会可能会有一定的结果差异。
#结果
先来看看终极实现后的结果:
实现功能
实现过程相对比较简单的就是使用协程StartCoroutine的方式Addressables.LoadAssetAsync()加载资源包 ,资源包采用配置数组的方式举行提前配置,并实例化对象在指定节点下面。AsyncOperationHandle的PercentComplete属性来同步更新每个资源的加载进度,并将进度同步到UI的进度条图片和Text上。
UI搭建
UI的搭建较为简单,新建一个图片为进度条,将Image Type设置为Filled,FillMathod 设置为Horizontal,Fill Origin设置为 Left:
如许设置后我们只须要修改Fill Amount就是进度条的进度了。
然后再新建两个Text作为加载的提示和加载的进度即可:
AA场景包处置惩罚
关于场景包的处置惩罚,我这里是对场景的节点举行了拖拽成了预设prefab文件,然后将prefab文件添加到Addressables对应的组中,举行Addressables打包即可,这些操作已经在之前的两篇博客中有详细的先容,这里就不先容了。
要留意的是在Hierarchy窗口中关联的prefab节点要举行删除,为了防止误操作,最好举行版本管理(svn 或者 git)。
AA包类
这里我们新建了AA包的配置类如下:
[System.Serializable]
public class AAPack
{
public string NodeName;
public Transform ParentTran;
public Vector3 scale = Vector3.one;
}
复制代码
NodeName为aa包名,在Addressables Groups窗口对应填写的包名:
ParentTran为实例化到该节点的子节点,scale 为实例化后的缩放配置;可以自行添加其他配置项,如实例化的位置(position),实例化的旋转角度(eulerAngles),新增的别的配置项须要在实例化的时间新增对应参数的设置。
这里的aa包配置,我设置为数组,并将对应的须要加载的包配置如下:
加载AA包
先贴出加载和更新进度UI的代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.AddressableAssets;
using UnityEngine.ResourceManagement.AsyncOperations;
public class AAPackLoader : MonoBehaviour
{
public AAPack[] AAPacks;
public Image ProcessImg;
public Text ProcessText;
int NowIdx = 0;
float TotalRat = 0;
// Start is called before the first frame update
void Start()
{
transform.localScale = Vector3.one;
ProcessImg.fillAmount = 0;
ProcessText.text = "0%";
StartCoroutine(LoadAllAAPack());
}
AsyncOperationHandle<GameObject> AO;
IEnumerator LoadAllAAPack() {
for (int i = 0; i < AAPacks.Length; i++) {
NowIdx = i;
if (AAPacks[i] != null)
{
AO = Addressables.LoadAssetAsync<GameObject>(AAPacks[i].NodeName);
yield return AO;
if (AO.Status == AsyncOperationStatus.Succeeded)
{
GameObject go = Instantiate(AO.Result, Vector3.zero, Quaternion.identity);
go.name = AAPacks[i].NodeName;
go.transform.SetParent(AAPacks[i].ParentTran == null ? this.transform : AAPacks[i].ParentTran);
go.transform.localPosition = Vector3.zero;
go.transform.localEulerAngles = Vector3.zero;
go.transform.localScale = AAPacks[i].scale;
go.SetActive(true);
}
}
}
transform.localScale = Vector3.zero;
Destroy(gameObject);
}
// Update is called once per frame
void Update()
{
if (AAPacks.Length > 0) {
//+1
TotalRat = (float)(NowIdx) / (float)AAPacks.Length + AO.PercentComplete / AAPacks.Length; //AO.GetDownloadStatus().Percent
//Debug.Log("NowIdx:" + NowIdx + " TotalRat:" + TotalRat + " AAPacks:" + AAPacks.Length + " Percent:" + AO.PercentComplete);
ProcessImg.fillAmount = TotalRat;
ProcessText.text = (TotalRat * 100).ToString("F1") + "%";
}
}
}
复制代码
这里启动时直接开始了协程IEnumerator LoadAllAAPack举行全部包的加载,并在Update函数中对进度举行了换算和更新。在加载完成后,直接烧毁了该对象,因为这个模块在程序启动时,加载了全部的场景,它的工作已经完成了,不会再执行了,以是举行了烧毁。
接下来直接将须要关联的节点拖拽进入对应的框内:
并运行即可。
来源:
https://blog.csdn.net/qq_33789001/article/details/127490940
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复
使用道具
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
三木与月轩
18
主题
0
回帖
54
积分
注册会员
注册会员, 积分 54, 距离下一级还需 296 积分
注册会员, 积分 54, 距离下一级还需 296 积分
积分
54
加好友
发消息
回复楼主
返回列表
Unity
Web开发
易语语言
Cocos Creator
UE
其他
图文推荐
非绿色-黑鳍自动换角色组队吃药自动没疲劳刷金
2024-09-21
绿色-剑灵怀旧完整主线(10月更新)有韩服
2024-09-12
非绿色-定制AI全自动黑鳍V1.2
2024-09-14
剑灵三系精修端 星术咒3鬼3 T2 饰品属性外观
2023-08-16
Unity 超级马里奥
2023-08-22
热门排行
1
非绿色-黑鳍自动换角色组队吃药自动没疲劳
2
非绿色-定制AI全自动黑鳍V1.2
3
绿色-剑灵怀旧完整主线(10月更新)有韩服
4
剑灵三系精修端 星术咒3鬼3 T2 饰品属性外
5
Unity 超级马里奥
6
AI绘画stable-diffusion-webui指定GPU运行
7
非绿色-武神塔合集
8
非绿色-使用教程攻略
9
非绿色 3号自动切线 黑骑 钓鱼 蓝蛙
10
绿色-黑鳍脚本合集