首页 > 其他分享 >《暗黑战神》个人部分学习笔记 记录

《暗黑战神》个人部分学习笔记 记录

时间:2023-04-01 23:13:39浏览次数:43  
标签:Load 笔记 战神 资源 暗黑 path au Resources 加载

SIKI学院 暗黑战神课程 跳转链接

其他同学的笔记 csdn: 正版游戏的受害者 ARPG实战

CSDN:听雨眠丨 暗黑战神学习部分笔记



音效播放服务中的一段代码

private Dictionary<string, AudioClip> adDic = new Dictionary<string, AudioClip>();
public AudioClip LoadAudio(string path, bool cache = false) {
AudioClip au = null;
if (!adDic.TryGetValue(path, out au)) {
au = Resources.Load(path);
if (cache) {
adDic.Add(path, au);
}
}
return au;
}
讲一下逻辑和为什么这么设计

这段代码的逻辑是加载音频文件并进行缓存,以提高程序的运行效率。

具体来说,该函数接受一个字符串参数path表示要加载的音频文件的路径。如果cache为false,则每次调用该函数时都会重新加载音频文件;如果cache为true,则会先检查字典adDic中是否已经有了该路径对应的音频文件,如果已经存在,则直接从字典中获取;否则就通过Resources.Load方法加载该路径对应的音频文件,并将其添加到字典中以备下次使用。

为什么要设计成这样呢?因为Unity引擎在加载资源时需要消耗较长的时间和内存,反复加载同一资源会导致不必要的浪费。使用这种缓存机制可以避免重复加载同一资源,从而提高程序的性能表现。

Resources.Load方法加载资源是怎么回事

Resources.Load方法是Unity引擎提供的一种资源加载方式,可以用来加载工程中的资源文件。具体原理是Unity会将工程中所有资源预先打包成二进制格式,并存储在指定目录下的资源包(.asset)中。当我们使用Resources.Load方法时,Unity会根据传入的路径去寻找对应的资源包,并将其中的资源加载到内存中。

例如,我们可以通过以下代码来加载一个名为"Assets/Resources/TestImage.png" 的图片资源:

Texture2D texture = Resources.Load<Texture2D>("TestImage");

这里的参数"path"实际上表示相对于Resources目录下的路径。因此,上述代码中的"path"实际上是"TestImage"而不是 "Assets/Resources/TestImage.png"。

需要注意的是,由于Resources.Load方法是在运行时动态加载资源,因此它的性能可能较低。如果你需要加载的资源在游戏运行过程中不变且数量有限,建议使用更快速、更高效的资源管理方式,如将资源打包成AssetBundle或进行静态加载等。

标签:Load,笔记,战神,资源,暗黑,path,au,Resources,加载
From: https://www.cnblogs.com/MinervaZhang/p/17279648.html

相关文章

  • 《30天自制操作系统笔记》---第一天
    第一天第一个实验:用二进制写一个显示helloworld的“操作系统”使用工具:1、HxD-二进制编辑器2、qumu模拟器下载了HxD–二进制编辑器编辑好了书上的二进制程序helloos0.img然后按照书上写了bat脚本。Install脚本:用来制作系统启动盘Run脚本,用来启动qumu模拟器运行。不过......
  • docker笔记-安装、操作和Registry
    注意事项强烈建议docker宿主机关闭firewalld,改用iptables1docker安装1.1离线安装下载Docker二进制文件(https://download.docker.com/linux/static/stable/x86_64/)tarzxfdocker-xxxx-ce.tgzcpdocker/*/usr/bin/dockerd&验证dockerinfo注册成服务vi/usr/l......
  • Vue3学习笔记(7.0)
    Vue3计算属性计算属性关键词:computed计算属性在处理一些复杂逻辑时是很有用的。可以看下以下反转字符的例子:<!--*@Author:[email protected]*@Date:2023-03-3008:30:35*@LastEditors:Mei*@LastEditTime:2023-03-3008:33:36*@FilePath:\vscode\vue_co......
  • Vue3学习笔记(4.0)
    vue.js为两个最为常用的指令提供了特别的缩写://全称<av-bind:href="url"></a>//缩写<a:href="url"></a>v-on缩写//全称<av-on:click="doSomething"></a>//缩写<a@click="doSonthing"></a>条件判断条件判断使......
  • 笔记1
        刚开始读《构建之法》这本书时,书上所提到的很多问题都是我们平常在写代码时候会犯的一些小的错误,就我个人而言,在我还没读《构建之法》这本书之前,我还不知道我平常在写代码中犯了这么多的错误,虽然这些错误都是一些小错误,并不影响代码的执行,但是看了《构建之法》这......
  • 笔记2
    我在编写代码的时候没有重视代码规范的问题。现代软件产业经过几十年的发展,一个软件由一个人单枪匹马完成,已经很少见了,软件都是在相互合作中完成的。合作的最小单位是两个人,两个工程师在一起,做的最多的事情就是“看代码”,每个人都能看“别人的代码”,并发表意见。这时,如果我们的代......
  • 笔记3
    我在编程时没有重视团队的重要性,对于团队的认识还不够。团队有一致的集体目标。团队成员有各自的分工,互相依赖合作,共同完成任务。软件团队的模式有一窝蜂模式、主治医生模式、明星模式、社区模式、业余剧团模式、秘密团队、特工团队、交响乐模式、爵士乐模式、功能团队模式、官僚......
  • 《前端构建工具(webpack&vite)- 李立超》笔记
    1.构建工具简介1.1模块化最初我们都使用script标签来引入js,但当一个页面引入的js文件越来越多时,就产生了几个难以避免的问题:全局变量污染。变量重名。js之间的依赖关系复杂,无法保证顺序。而模块化规范就是为解决以上问题,模块内部的变量实现了在其他模块内共享。而且可以......
  • 面试笔记-Docker(Ⅱ)
    上篇文章已经成功build了image并且创建了container运行成功,我们现在进行接下来的工作目录挂载使用Docker运行后,我们改了项目代码不会立刻生效,需要重新build和run,很是麻烦。容器里面产生的数据,例如log文件,数据库备份文件,容器删除后就丢失了。......
  • JS基础《JavaScript精粹》笔记摘录
    基础概念和语法基本类型、null、undefined、NaNJavaScript定义了一小批基本类型(primitivetype),它们包括字符串类型(string,单引号或双引号包起来)、数值类型(number,整数和小数都用这个类型)和布尔类型(boolean,值仅有true和false)。JavaScript使用两个特殊的值来表示不存在有意义的值—......