当前位置: 首页 > news >正文

【Unity程序技巧】异步保险箱管理器

在这里插入图片描述


👨‍💻个人主页:@元宇宙-秩沅

👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!

👨‍💻 本文由 秩沅 原创

👨‍💻 收录于专栏:Unity基础实战

🅰️



文章目录

    • 🅰️
    • 前言
    • 🎶(==II==)<font color=green >涉及知识点
    • 🎶(==W==) 异步保险箱管理器
        • 1.知识点
        • 2.特点
        • 3.脚本
    • 🅰️


前言


🎶(II涉及知识点


  • List泛型类
    在这里插入图片描述
    在这里插入图片描述

  • Dictionary泛型类

在这里插入图片描述
在这里插入图片描述

  • hashtable的遍历 和 Dictionary 遍历API的区别对比
    +

🎶(W 异步保险箱管理器


1.知识点

在这里插入图片描述

2.特点

  • 由两个部分组成:保险箱数据 和 缓存池管理器
  • 减少了GC的回收,提高了性能,实现了闭环
  • 代码自动创建对象
  • 首先得再面板中创建衣柜对象,而后会由代码进行保险箱的创建
  • 用异步加载是因为考虑到有大资源的情况下
  • 缺点:现在的这个只能放GameObject类型的资源


当音乐管理器需要把音频资源放入缓存池时,此时的缓存池不足以支持存取,因为此时只能存取GameObject类型的资源,需要进行修改,有两个办法:
1.将其变成泛型(1.用到泛型占位符,2.用到泛型约束)
2.将其重载

3.脚本

//缓存池管理器
public class BoxManager: SingleManager<BoxManager>
{//缓存池里面存保险箱public Dictionary<string, PoolData> poolDic = new Dictionary<string, PoolData>();private GameObject poolObj;public void GetObj(string name, UnityAction<GameObject> callBack){//有箱子并且箱子里有东西if (poolDic.ContainsKey(name) && poolDic[name].poolList.Count > 0){callBack(poolDic[name].GetObj());}else{//异步加载ResourceManager.GetInstance().LoadAsync<GameObject>(name, (o) =>{o.name = name;callBack(o);});}}//放东西进箱子public void PushObj(string name, GameObject obj){if (poolObj == null) //防止报错poolObj = new GameObject("Pool");if (poolDic.ContainsKey(name)){poolDic[name].PushObj(obj);}else{poolDic.Add(name, new PoolData(obj, poolObj));}}//清空缓存池——在场景切换时public void Clear(){poolDic.Clear();poolObj = null;}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;//缓存池保险箱
public class BoxData
{//保险箱的名字public GameObject fatherObj;//保险箱的容器public List<GameObject> poolList;public PoolData(GameObject obj, GameObject poolObj){fatherObj = new GameObject(obj.name);fatherObj.transform.parent = poolObj.transform;poolList = new List<GameObject>() {};PushObj(obj);}//放进箱子public void PushObj(GameObject obj){obj.SetActive(false);poolList.Add(obj);obj.transform.parent = fatherObj.transform;}//从箱子中取出public GameObject GetObj(){GameObject obj = null;obj = poolList[0];    //取出箱子容器中的第一个poolList.RemoveAt(0); //然后容器中移除       obj.SetActive(true);      obj.transform.parent = null;  //断开了父子关系return obj;}
}

🅰️


⭐【Unityc#专题篇】之c#进阶篇】

⭐【Unityc#专题篇】之c#核心篇】

⭐【Unityc#专题篇】之c#基础篇】

⭐【Unity-c#专题篇】之c#入门篇】

【Unityc#专题篇】—进阶章题单实践练习

⭐【Unityc#专题篇】—基础章题单实践练习

【Unityc#专题篇】—核心章题单实践练习


你们的点赞👍 收藏⭐ 留言📝 关注✅是我持续创作,输出优质内容的最大动力!


在这里插入图片描述


相关文章:

【Unity程序技巧】异步保险箱管理器

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;Uni…...

ChatGPT 助力英文论文翻译和润色

文章目录 一、前言二、主要内容1. 中英互译2. 中文润色3. 英文润色 三、总结 &#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 一、前言 随着全球化的推进&#xff0c;跨文化交流变得越来越重要。在学术领域&#xff0c;英文论文的质量对于研究成果的传…...

【2024秋招】腾讯云智武汉后端开发一面 2023-9-20

1 java 1.1 hashMap 1.2 哈希冲突的解决方法 1.3 讲解一下CAS的aba问题 1.4 concurrentHashMap的并发方案为什么要使用cas ConcurrentHashMap 是 Java 并发包 java.util.concurrent 中的一个重要组件&#xff0c;用于提供高并发、高性能、线程安全的哈希映射。为了达到这样…...

k8s-----16、配置管理-ConfigMap

ConfigMap 1、作用2、以volume形式进行挂载2.1 创建配置文件2.2 创建ConfigMap文件2.3 最终的yaml文件 3、以变量形式进行挂载3.1 创建configmap文件3.2 书写最终yaml文件 1、作用 存储不加密的数据到etcd中&#xff0c;以变量或者volume形式挂载到pod的容器中场景&#xff1a…...

QML QTP0001 not set 警告

使用QML的时候发现有这个警告。查阅资料之后发现解决办法。 大概的意思是说现在:/qt/qml/ 这个前缀是QML模块资源文件的前缀&#xff0c;而之前是:/ 这是从QT6.5开始的&#xff0c;旧的前缀被标记为废弃的。文档还说在使用qt_add_qml_module()不指定RESOURCE_PREFIX是新版的前…...

Mac M1编译 swift 5.8.1源码

参考链接&#xff1a;https://github.com/apple/swift/blob/main/docs/HowToGuides/GettingStarted.md#system-requirements 编译 Swift 5.8 源码-六虎 解决M1芯片的Homebrew安装问题--For M1使用者_m1 homebrew安装_a_52hz的博客-CSDN博客 建议全程梯子 一、检查和配置环境…...

[极客大挑战 2019]EasySQL

【解题思路】 1.打开靶机链接 2.输入数据进行尝试 输入1,1&#xff1a; 可以在导航栏里面看到username和password的变量。 3.使用万能密码 username&#xff1a;1 or 11# username&#xff1a;任意数据 password&#xff1a;任意数据 …...

统信UOS技术开放日:四大领域全面接入AI大模型能力

1024是程序员的节日&#xff0c;10月24日&#xff0c;统信举办2023统信UOS技术开放日暨deepin Meetup北京站活动&#xff0c;发布与大模型同行的UOS AI、浏览器AI助手、邮箱AI助手、自然语言全局搜索、畅写在线等多项最新AI技术与产品应用。 统信软件高级副总经理、CTO、深度社…...

【Linux系统编程:信号】产生信号 | 阻塞信号 | 处理信号 | 可重入函数

写在前面 通过学习信号可以理解进程与进程的一个相对关系&#xff0c;还能理解操作系统与进程的关系。要注意的是进程间通信中的信号量与这里的信号没有半毛钱关系&#xff0c;就像老婆和老婆饼。 本文要点&#xff1a; 掌握 Linux 信号的基本概念掌握信号产生的一般方式理解…...

Linux NFS的整体架构与核心代码解析

前面文章我们从应用层面对NFS进行了介绍&#xff0c;接下来的文章我们将进入实现层面。本文首先从整体上对Linux的NFS软件架构进行介绍&#xff0c;然后介绍代码与实际业务逻辑介绍一下NFS的处理流程。 NFS文件系统的架构分析 NFS分布式文件系统是一个客户端-服务端架构&#…...

28、Flink 的SQL之DROP 、ALTER 、INSERT 、ANALYZE 语句

Flink 系列文章 1、Flink 部署、概念介绍、source、transformation、sink使用示例、四大基石介绍和示例等系列综合文章链接 13、Flink 的table api与sql的基本概念、通用api介绍及入门示例 14、Flink 的table api与sql之数据类型: 内置数据类型以及它们的属性 15、Flink 的ta…...

正则表达式[总结]

文章目录 1. 为什么要学习正则表达式2. 再提出几个问题&#xff1f;3. 解决之道-正则表达式4. 正则表达式基本介绍5. 正则表达式底层实现(重要)6. 正则表达式语法6.1 基本介绍6.2 元字符(Metacharacter)-转义号 \\\6.3 元字符-字符匹配符6.4 元字符-选择匹配符6.5 元字符-限定符…...

【docker】搭建xxl-job

首先创建数据库&#xff0c;例如我已经有了mysql 在 192.168.20.17上 #首先要有对应的数据库&#xff0c;创建xxl-job所需表CREATE database if NOT EXISTS xxl_job default character set utf8mb4 collate utf8mb4_unicode_ci; use xxl_job;SET NAMES utf8mb4;CREATE TABLE xx…...

k8s-----3、kubernetes集群部署(kubeadm部署)

集群部署 1、kubeadm流程&#xff08;重新配置&#xff09;1.1 安装要求1.2 准备环境 1.3. 所有节点安装Docker/kubeadm/kubelet1.3.1 安装Docker1.3.2 添加阿里云YUM软件源1.3.3 安装kubeadm&#xff0c;kubelet和kubectl 1.4 部署Kubernetes Master1.5. 加入Kubernetes Node1…...

党建展馆vr仿真解说员具有高质量的表现力和互动性

随着虚拟数字人应用渐成趋势&#xff0c;以虚拟数字人为核心的营销远比其他更能加速品牌年轻化进程和认识&#xff0c;助力企业在激烈的市场竞争中脱颖而出&#xff0c;那么企业虚拟IP代言人解决了哪些痛点? 解决品牌与代言人之间的风险问题 传统代言人在代言品牌时&#xff0…...

Webpack 基础以及常用插件使用方法

目录 一、前言二、修改打包入/出口配置步骤 三、常用插件使用html-webpack-plugin打包 CSS 代码提取 CSS 代码优化压缩过程打包 less 代码打包图片文件 一、前言 本质上&#xff0c;Webpack 是一个用于现代 JavaScript 应用程序的 静态模块打包工具。当 webpack 处理应用程序时…...

ROCESS SPID 代表什么进程

ROCESS 发出sql命令 所在主机的进程 可以不在数据库主机上发出 SPID 对应数据库的服务进程id select a.PROCESS,b.SPID From v$session a , v$process b where a.PADDRb.ADDR and a.USERNAMESYS SQL> !ps -ef|grep sqlplus oracle 385 2792 0 21:01 pts/…...

oracle rac了解

Oracle RAC 是一种高可用性和高性能的数据库解决方案&#xff0c;它允许多台服务器共享同一个数据库。简而言之&#xff0c;Oracle RAC 允许你将多个计算节点连接到一个共享的数据库实例中&#xff0c;从而提供了以下优势&#xff1a; 高可用性&#xff1a;Oracle RAC 提供了故…...

力扣 -- 44. 通配符匹配

解题步骤&#xff1a; 参考代码&#xff1a; class Solution { public:bool isMatch(string s, string p) {int ms.size();int np.size();//为了调整映射关系s s;p p;//多开一行多开一列vector<vector<bool>> dp(m1,vector<bool>(n1,false));//初始化//dp[0…...

电脑msvcp100.dll丢失的解决办法,靠谱的五个解决方法分享

在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中最常见的就是“缺少xxx.dll文件”。而msvcp100.dll就是其中之一。那么&#xff0c;msvcp100.dll到底是什么呢&#xff1f;它对我们的计算机有什么作用&#xff1f;本文将从多个方面对msvcp100.dll进行…...

Pixel Aurora Engine精彩案例分享:复古游戏封面与角色立绘生成实录

Pixel Aurora Engine精彩案例分享&#xff1a;复古游戏封面与角色立绘生成实录 1. 像素艺术的数字复兴 在数字艺术领域&#xff0c;像素风格正经历着令人振奋的复兴。Pixel Aurora Engine作为这一浪潮中的创新工具&#xff0c;将传统像素艺术与现代AI技术完美融合&#xff0c…...

Qwen3-VL-WEB部署避坑指南:常见问题与解决方案汇总

Qwen3-VL-WEB部署避坑指南&#xff1a;常见问题与解决方案汇总 1. 前言&#xff1a;为什么你需要这份避坑指南 如果你正在尝试部署阿里云的Qwen3-VL-WEB镜像&#xff0c;可能已经遇到了各种“坑”——从显存不足到端口冲突&#xff0c;从镜像拉取失败到模型加载异常。这些看似…...

liunx的编译与链接(7)

1.条件编译的现实用途1.软件根据收费情况进行条件编译来对代码进行动态裁剪2.不同硬件所需的内核代码不同&#xff0c;可以采用条件编译来进行代码裁剪3.开发工具&#xff0c;应用软件的代码采用条件编译来适配不同的操作系统2.要转换为汇编语言的原因是历史导致代码的本质是操…...

如何用iTorrent在iPhone上轻松管理种子下载?iOS种子客户端全攻略

如何用iTorrent在iPhone上轻松管理种子下载&#xff1f;iOS种子客户端全攻略 【免费下载链接】iTorrent Torrent client for iOS 16 项目地址: https://gitcode.com/gh_mirrors/it/iTorrent iTorrent是一款专为iOS 16设备设计的开源种子客户端&#xff0c;让iPhone和iPa…...

Navicat连接PostgreSQL常见问题排查指南

1. Navicat连接PostgreSQL的典型问题场景 第一次用Navicat连PostgreSQL的朋友&#xff0c;八成会遇到这个报错画面——输入完账号密码点连接&#xff0c;结果弹个红叉提示"无法连接到服务器"。这种情况我见得太多了&#xff0c;特别是连接远程服务器或者虚拟机里的数…...

QuickBMS终极指南:解密游戏资源的完整解决方案

QuickBMS终极指南&#xff1a;解密游戏资源的完整解决方案 【免费下载链接】QuickBMS QuickBMS by aluigi - Github Mirror 项目地址: https://gitcode.com/gh_mirrors/qui/QuickBMS QuickBMS是一款功能强大的开源游戏资源提取工具&#xff0c;能够处理数百种压缩和加密…...

BilibiliDown:5分钟学会高效下载B站视频的完整指南

BilibiliDown&#xff1a;5分钟学会高效下载B站视频的完整指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader &#x1f633; 项目地址: https://gitcode.com/gh_mirrors/bi/B…...

MaaYuan使用指南

MaaYuan使用指南 【免费下载链接】MaaYuan 代号鸢 / 如鸢 一键长草小助手 项目地址: https://gitcode.com/gh_mirrors/ma/MaaYuan MaaYuan是一款基于MaaFramework开发的跨平台游戏自动化工具&#xff0c;专为《代号鸢》和《如鸢》玩家设计。通过图像识别和模拟控制技术&…...

C盘空间不足?符号链接轻松迁移文件

今天&#xff0c;给大家介绍一种与众不同的清理 C 盘的方法——符号链接。与传统方法不同&#xff0c;符号链接不会删除文件&#xff0c;而是将 C 盘的文件移动到其他盘。换言之&#xff0c;使用此方法的前提是&#xff1a;其他盘还有足够的空间&#xff0c;但同时&#xff0c;…...

保姆级教程:用Node.js搭建WebSocket中继,让ESP32-CAM视频在另一块ESP32屏幕上实时播放

从零构建ESP32-CAM视频中继系统&#xff1a;WebSocket与Node.js的深度实践 想象一下这样的场景&#xff1a;工厂里的巡检机器人通过摄像头捕捉设备状态&#xff0c;实时传输到工程师的监控屏幕&#xff1b;或是智能家居中的安防摄像头&#xff0c;将画面无缝推送到多个终端。这…...