UnityVR--ResourceManager--资源管理

news2024/9/20 16:25:09

目录

简介

加载资源的几种方式

资源加载的管理器Resload.cs

ResLoad类的应用举例


简介

  这里记录一个资源管理工具集,提供一些方法将一些Object、Prefab直接从Assets文件夹中加载到场景中。

加载资源的几种方式

  在项目中我们经常需要使用一些随时取用的东西,可能是预制体格式,也可能是任何格式,如材质、文档甚至场景。在之前的文章中主要采取了下面的1、2两种方式获取:

  1. 设置public变量并在面板中指定相应资源

  这个方法之前使用过非常多了,只要在脚本中public一个变量,然后到面板中拖入相应的对象即可。如:  

public GameObject Bullet;//加入一个子弹

 

  优点:直观

  缺点:一旦脚本修改或重新挂载很容易忘记设置

  2. 在场景中寻找

  也就是一开始就将资源加载到场景中,在脚本中使用GameObject.Find来查找,比如之前在机械臂场景2中,脚本中根据路径去找机械臂的子节点:

  优点:方便,不用做过多设置

  缺点:GameObject.Find或transform.Find等,运行时会遍历场上所有节点(包括所有子节点),比较消耗资源。

  3. 从Assets文件夹下加载

 

   将资源放置在“Assets/Resources”文件夹下,且这个文件夹名字不能改。需要使用时,用Unity的API“Resources.Load”加载。定义如下,其中的参数 path,就是以Resources文件夹作为父目录的:

        public static Object Load(string path)

        public static T Load<T>(string path) where T : Object

资源加载的管理器Resload.cs

  Unity的Resources类中有许多有用的资源加载方法。在它的基础上,我们可以根据自身项目的需要,建立一个资源管理文件ResLoad.cs,以便于在项目中方便地调用各种类型的文件。下面的ResLoad.cs中定义了3个加载资源的方法,包括泛型方法,以便于能够加载任何类型的文件,之后可能会根据需要再增加其他方法。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//从Assets加载资源的方法集合
public class ResLoad : SingleMono<ResLoad>  //继承Mono的单例
{
    public GameObject LoadPrefab(string resName)
    {//通过资源名添加预制体,资源需要放在Resources根目录
        GameObject go = Resources.Load<GameObject>(resName);
        if(go==null)
        {//判断是否加载成功
            Debug.LogError(resName+"ResLoad:Resources加载路径失败");
            return null;
        }
        return Instantiate(go);  //如果加载成功,则实例化它
        //因为ResLoad类是继承了SingleMono<ResLoad>的单例,
        //这个单例是继承MonoBehaviour的,因此直接可以使用Instantiate方法实例化
        //否则就需要用GameObject来调用
        //return GameObject.Instantiate(go);
    }

    public T LoadAsset<T>(string pathName,string resName) where T:Object
    {//通过路径加载资源,当然也可以先判空一下
        return Resources.Load<T>(pathName + "/" + resName);
    }

    public T LoadAsset<T>(string resName)
        where T :Object
    {//通过资源名加载,比如这个资源直接放在根目录下
        return Resources.Load<T>(resName);
    }
}

ResLoad类的应用举例

 ResLoad类继承了SingleMono,因此在使用时不需要每次new对象,使用Instance字段就可以新建或访问到项目内唯一的实例。以下是调用举例:

  1. 在工具集Tools.cs中,加载了Resources文件夹中名为“line”的材质文件:

line.material=Resload.Instance.LoadAsset<Material>("line"); 

  2. 主角使用子弹时,按下Space按键,加载Resources文件夹中名为“Bullet”的预制体:

Bullet = Resload.Instance.LoadPrefab("Bullet");

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/565115.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023 华为 Datacom-HCIE 题库 06--含解析

多项选择 1.[试题编号&#xff1a;190185] &#xff08;多选题&#xff09;如图所示&#xff0c;PE 1和PE2之间通过Loopback0接口建立MP-BGP邻居关系&#xff0c;在配置完成之后&#xff0c;发现CE1和CE2之间无法互相学习路由&#xff0c;以下哪些项会导致该问题出现? A、PE1…

GDB调试工具

GDB&#xff08;GNU Debugger&#xff09;是一个功能强大的命令行调试工具&#xff0c;用于调试 C、C 程序以及其他编程语言的程序。它是 GNU 项目的一部分&#xff0c;可在多个操作系统上使用&#xff0c;包括 Linux、macOS 和 Windows&#xff08;通过 MinGW 或 Cygwin&#…

针对KF状态估计的电力系统虚假数据注入攻击研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

如何用ChatGPT学Python

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 新建了人工智能中文站https://ai.weoknow.com 每天给大家更新可用的国内可用chatGPT资源 ChatGPT的能力大家肯定都听说过&#xff0c;很多学生应该都亲身体验过。它在自然语言处理方面的出色表现绝对颠覆了之前公众对人…

一文详解Java自定义注解

目录 简介 JDK注解 Target Retention Documented Inherited 第三方注解 自定义注解 举例 默认字符串注解 实现指定包名称扫描注解 简介 注解&#xff08;Annotation&#xff09;是Java SE 5.0 版本开始引入的概念&#xff0c;它是对 Java 源代码的说明&#xff0c;…

FreeRTOS中断配置和临界值

Cortx-M 中断 优先级分组 Cortex-M3允许具有较少中断源时使用较少的寄存器位指定中断源的优先级&#xff0c;因此STM32把指定中断优先级的寄存器位减少到4位。抢占优先级的级别高于响应优先级。而数值越小所代表的优先级就越高。高的抢占式优先级可以打断低的抢占式优先级&am…

mysql加强小结 203446

数据库三范式: 什么是范式 规则:想要设计一个好的关系,必须要满足一定的约束条件,有几个等级,一级比一级高 ​ 解决什么问题:让数据库设计更加简洁,结构更加清晰,否则容易造成数据冗余 数据库有哪些范式? ​ 数据库有七大范式,常用的只有三个范式 **第一范式:**业务上属…

电磁兼容(EMC)基础(二)

目录 1.1 什么是电磁兼容&#xff08;EMC&#xff09; 1.2 各种各样的“干扰” 1.3 电磁兼容三要素 1.4 什么是分贝 1.5 天线 1.1 什么是电磁兼容&#xff08;EMC&#xff09; 电磁兼容(Electro Magnetic Compatibility&#xff0c;EMC)是电子、电气设备或系统的一种重要…

面试题基础篇

文章目录 1、二分查找2、冒泡排序3、选择排序4、插入排序5、希尔排序6、快速排序7、ArrayList8、Iterator9、LinkedList10、HashMap10.1、基本数据结构底层数据结构&#xff0c;1.7和1.8有什么不同&#xff1f; 10.2、树化与退化为何要用红黑树&#xff0c;为何一上来不树化&am…

【开放原子训练营(第三季)inBuilder低代码开发实验室学习心得】

今天要给大家介绍的项目是UBML 什么是UBML呢&#xff1f; UBML&#xff08;统一业务建模语言 Unified-Business-Modeling-Language&#xff09;是一种用于快速构建应用软件的低代码开发建模语言&#xff0c;是开放原子开源基金会&#xff08;OpenAtom Foundation&#xff09;…

数据结构与算法:树形查找

一.二叉排序树&#xff08;BST&#xff09; 1.个人理解 左子树结点值 < 根结点值 < 右子树结点值对二叉排序树进行中序遍历&#xff0c;可以得到一个递增的有序数列 2.二叉树查找 原理&#xff1a; 对于一个给定的二叉排序树&#xff0c;如果要查找一个节点&#xff0…

并发知识杂谈

在JAVA语言层面&#xff0c;怎么保证线程安全&#xff1f; 有序性&#xff1a;使用happens-before原则 可见性&#xff1a;可以使用 volatile 关键字来保证&#xff0c;不仅如此&#xff0c;volatile 还能起到禁止指令重排的作用&#xff1b;另外&#xff0c; synchronized 和…

进程和编码

一、python代码的运行方式 1.脚本式 2. 交互式 一般用于代码的测试 二、进制及相互之间的转换 1. 进制 2.进制之间相互转换 在python中&#xff0c;十进制是以整形的形式存在&#xff0c;其他进制是已字符串的形式存在。 二进制/八进制/十六进制都可与十进制相互转换。但…

走向编程大师之路的几个里程碑

走向编程大师之路的几个里程碑 1语言关 2算法关 3系统关 4 编译器关 如下的系统的核心代码都有一万行以上&#xff0c;是规模和复杂度足够 大&#xff0c;可以检验开发者的模块化编程能力&#xff0c;掌控复杂度的能力。 使用什么编程语言本身是不重要的&#xff0c;能够有能…

常用消息中间件简介

一、 分布式系统消息通信技术简介 分布式系统消息通信技术主要包括以下几种&#xff1a; 1. RPC(Remote Procedure Call Protocol). 一般是C/S方式&#xff0c;同步的&#xff0c;跨语言跨平台&#xff0c;面向过程 2. CORBA(Common Object Request Broker Architecture). CO…

一个命令搞定Linux大文件下载

问题 Linux下log日志太大了&#xff0c;下载太慢了&#xff0c;即使下载下来&#xff0c;打开也费劲&#xff0c;咋办&#xff1f;将某文件夹打包成xx.tar.gz包&#xff0c;但依然很大&#xff0c;公司无法下载这么大的压缩包&#xff0c;咋办&#xff1f; split 以上2个问题…

[golang gin框架] 37.ElasticSearch 全文搜索引擎的使用

一.全文搜索引擎 ElasticSearch 的介绍&#xff0c;以 及安装配置前的准备工作 介绍 ElasticSearch 是一个基于 Lucene 的 搜索服务器,它提供了一个 分布式多用户能力的 全文搜索引擎&#xff0c;基于 RESTful web 接口,Elasticsearch 是用 Java 开发的&#xff0c;并作为 Apac…

PIC18F26单片机波特率配置

只需要配置以下三个寄存器&#xff1a; BRGCON1 BRGCON2 BRGCON3 BRGCON10x07; > 0000 0111 BRGCON20x90; > 1001 0000 BRGCON30x42; > 0101 0010 BRGCON1&#xff1a; Sync_Sog (bit7~bit6)1TQ,BRP(bit5~bit0)1 &#xff0c;则TQ((2*(BRP1))/Fosc16/32M&am…

Mysql存储时间,对应Api及对应的java属性

1.Mysql存储时间的类型 常用的储存时间/日期的类型&#xff1a; DATE&#xff1a;仅用于存储日期值&#xff08;年、月、日&#xff09;&#xff0c;格式为YYYY-MM-DD。TIME&#xff1a;仅用于存储时间值&#xff08;小时、分钟、秒&#xff09;&#xff0c;格式为HH:MM:SS。DA…

朴素贝叶斯算法实现英文文本分类

目录 1. 作者介绍2. 朴素贝叶斯算法简介及案例2.1朴素贝叶斯算法简介2.2文本分类器2.3对新闻文本进行文本分类 3. Python 代码实现3.1文本分类器3.2 新闻文本分类 参考&#xff08;可供参考的链接和引用文献&#xff09; 1. 作者介绍 梁有成&#xff0c;男&#xff0c;西安工程…