xlua使用

embedded/2024/10/21 6:22:46/

1. 安装

到 github 移动三个文件夹过去即可
Assets -》Plugins
Assets -》Xlua
Tools

移动到 unity里面的Assets目录即可
会在工具栏出现Xlua即安装成功

2. 引入基础类

在这里插入图片描述
ABMgr.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;public class ABMgr : SingletonAutoMono<ABMgr>
{private AssetBundle mainAB = null;//依赖包获取用的配置文件private AssetBundleManifest manifest = null;//AB包不能够重复加载 重复加载会报错//字典 用字典来存储 加载过的AB包 private Dictionary<string, AssetBundle> abDic = new Dictionary<string, AssetBundle>();/// <summary>/// 这个AB包存放路径 方便修改/// </summary>private string PathUrl{get{return Application.streamingAssetsPath + "/";}}/// <summary>/// 主包名 方便修改/// </summary>private string MainABName{get{
#if UNITY_IOSreturn "IOS";
#elif UNITY_ANDROIDreturn "Android";
#elsereturn "PC";
#endif}}/// <summary>/// 加载AB包/// </summary>/// <param name="abName"></param>public void LoadAB( string abName ){//加载AB包if (mainAB == null){mainAB = AssetBundle.LoadFromFile(PathUrl + MainABName);manifest = mainAB.LoadAsset<AssetBundleManifest>("AssetBundleManifest");}//我们获取依赖包相关信息AssetBundle ab = null;string[] strs = manifest.GetAllDependencies(abName);for (int i = 0; i < strs.Length; i++){//判断包是否加载过if (!abDic.ContainsKey(strs[i])){ab = AssetBundle.LoadFromFile(PathUrl + strs[i]);abDic.Add(strs[i], ab);}}//加载资源来源包//如果没有加载过 再加载if (!abDic.ContainsKey(abName)){ab = AssetBundle.LoadFromFile(PathUrl + abName);abDic.Add(abName, ab);}}//同步加载 不指定类型public Object LoadRes(string abName, string resName){//加载AB包LoadAB(abName);//为了外面方便 在加载资源时 判断一下 资源是不是GameObject//如果是 直接实例化了 再返回给外部Object obj = abDic[abName].LoadAsset(resName);if (obj is GameObject)return Instantiate(obj);elsereturn obj;}//同步加载 根据type指定类型public Object LoadRes(string abName, string resName, System.Type type){//加载AB包LoadAB(abName);//为了外面方便 在加载资源时 判断一下 资源是不是GameObject//如果是 直接实例化了 再返回给外部Object obj = abDic[abName].LoadAsset(resName, type);if (obj is GameObject)return Instantiate(obj);elsereturn obj;}//同步加载 根据泛型指定类型public T LoadRes<T>(string abName, string resName) where T:Object{//加载AB包LoadAB(abName);//为了外面方便 在加载资源时 判断一下 资源是不是GameObject//如果是 直接实例化了 再返回给外部T obj = abDic[abName].LoadAsset<T>(resName);if (obj is GameObject)return Instantiate(obj);elsereturn obj;}//异步加载的方法//这里的异步加载 AB包并没有使用异步加载//知识从AB包中 加载资源时 使用异步//根据名字异步加载资源public void LoadResAsync(string abName, string resName, UnityAction<Object> callBack){StartCoroutine(ReallyLoadResAsync(abName, resName, callBack));}private IEnumerator ReallyLoadResAsync(string abName, string resName, UnityAction<Object> callBack){//加载AB包LoadAB(abName);//为了外面方便 在加载资源时 判断一下 资源是不是GameObject//如果是 直接实例化了 再返回给外部AssetBundleRequest abr = abDic[abName].LoadAssetAsync(resName);yield return abr;//异步加载结束后 通过委托 传递给外部 外部来使用if (abr.asset is GameObject)callBack(Instantiate(abr.asset));elsecallBack(abr.asset);}//根据Type异步加载资源public void LoadResAsync(string abName, string resName, System.Type type, UnityAction<Object> callBack){StartCoroutine(ReallyLoadResAsync(abName, resName, type, callBack));}private IEnumerator ReallyLoadResAsync(string abName, string resName, System.Type type, UnityAction<Object> callBack){//加载AB包LoadAB(abName);//为了外面方便 在加载资源时 判断一下 资源是不是GameObject//如果是 直接实例化了 再返回给外部AssetBundleRequest abr = abDic[a

http://www.ppmy.cn/embedded/94636.html

相关文章

基于 Vue 3 的企业级前端设计语言和 React 组件库——arco.design

Arco Design 入门指南&#xff1a;如何使用 Vue 3 的企业级设计语言和组件库 摘要&#xff1a; Arco Design 是一个基于 Vue 3 的前端设计语言和组件库&#xff0c;旨在提供一套简单易用、高效稳定的前端解决方案。本文将介绍如何安装、使用 Arco Design 以及如何定制主题和设…

纯css实现多行文本右下角最后一行展示全部按钮

未展开全部&#xff1a; 展开全部&#xff1a; 综上演示按钮始终保持在最下方 css代码如下&#xff1a; <div class"info-content"><div class"info-text" :class"!showAll ? mle-hidden : "><span class"show-all"…

BioMistral 7B: 生物医学领域的开源多语言AI模型

人工智能咨询培训老师叶梓 转载标明出处 尽管目前有许多开源的针对健康领域的大模型可供使用&#xff0c;但现有模型在数据隐私风险、模型性能以及多语言支持方面的局限性&#xff0c;限制了它们在医疗领域的应用。为了克服这些限制&#xff0c;研究者们提出了BioMistral&#…

allegro PCB设计心得笔记(四) -- 显示坐标原点和更改默认产品选项

一、修改坐标原点 Allegro PCB设计过程中&#xff0c;有时需要修改坐标原点&#xff0c;但是PCB文件不显示坐标原点&#xff0c;无法确认已修改的坐标原点是否已经修改好。 显示PCB原点的设置方法如下&#xff1a; Setup -> Design Parameter Editor&#xff0c;如下图所示&…

某通用系统0day审计过程

前言 代码审计篇章都是自己跟几个师傅们一起审计的1day或者0day(当然都是小公司较为简单)&#xff0c;禁止未经允许进行转载&#xff0c;发布到博客的用意主要是想跟师傅们能够交流下审计的思路&#xff0c;毕竟审计的思路也是有说法的&#xff0c;或者是相互源码共享也OK&…

关于Vue项目npm快捷键,点击run启动报错,及npm i也报错的解决办法

1.配置idea的npm 2.点击运行按钮 3.结果 分析原因及问题&#xff1a; npm i npm run dev 由于是刚刚从gitlab新拉的前端代码&#xff0c;可能没有用命令install过类似于没有编译过&#xff0c;所以执行一下上面的命令 结果报错如下&#xff1a; F:\tbyf\qjyy\hip-manager-ui&…

前端组件库汇总

文章目录 一、前端组件库1. ElementUI(基于 Vue 2.0 的桌面端组件库)2. Element Plus(基于 Vue 3,面向设计师和开发者的组件库)3. Vue DevUI(一个基于 DevUI Design 的 Vue3 组件库)4. vant(轻量、可定制的移动端 Vue 组件库)5. Ant Design(助力设计开发者「更灵活」…

Ubuntu 安装Redis

Ubuntu 安装Redis 安装redis-server apt-get install redis-server启动服务 service redis-server start默认的配置文件路径&#xff1a;/etc/redis/redis.conf 默认的安装路径&#xff1a;/var/lib/redis rootDESKTOP-0JS7U4E:/var/lib/redis# tree . ├── appendonly.…