1.18 从0开始学习Unity游戏开发--资源加载

本文介绍了Unity中资源加载的几种方式,包括引用形式的加载、Resources文件夹加载。详细解析了Unity如何处理场景内外资源的引用,以及Resources.Load API的使用方法。此外,提到了AssetDatabase和AssetBundle,但后两者不在初级教程中讲解。
摘要由CSDN通过智能技术生成

在上一篇文章中,我们大约是开始接触到资源加载的事情了,场景资源则是一个比较特殊的资源,我们只要添加到Build Settings里面,那么我们就可以通过API直接加载。

但是其他类型的资源怎么办呢?比如我们制作一个网络游戏,接收到后台的返回数据要求给人物装上一把枪,但是我们也不可能把所有枪都作为成员数据赋值上去,肯定是希望用到哪个就加载哪个,所以这个时候就需要支持通过类似名字或者路径的方式加载资源。

因此本章我们将会讲解Unity中资源到底是什么,如何进行加载的,以及几种加载方式适用的场景。

引用形式的加载

之前的篇章里面我们要使用某个资源,都是在代码中加入成员变量,借助Unity的序列化能力显示在编辑器面板上,然后我们通过拖拽等方式,将场景内的物体或者Project窗口里面的资源赋值到对应的变量上去,这种加载资源的方法是通过引用来进行加载的。

之前分析实际场景文件的时候我们有分析过,我们的GameObject也好,组件类也罢,在序列化的时候都会生成一个唯一的id,这个id就是用来存储引用关系,在场景启动的时候就会加载场景里面已有的GameObject,然后根据文件内的id数据来索引所有的引用关系。

但是有一个问题就是,我们之前其实有使用Prefab赋值给场景内物体的组件变量上,那这个引用关系又是如何呢?

我们不妨以文本方式打开Demo.unity文件,找到我们赋值bullet的FireController这个物体的FireController组件:

可以看到这里我们又见到了fileID,但是很显然这个fileID我们是无法在场景文件内搜索到第二个使用的地方,毕竟这里赋值的Prefab是存在于Project窗口里面而非场景里面,那么我们注意到后面还有一个guid,擅长全局搜索的朋友可能会尝试把整个Assets目录都搜索一遍,很快就能找到其实这个guid存在于Bullet.prefab.meta文件中:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值