U4S4L18——引用计数规则
U4S4L18——引用计数规则 引用计数规则 当我们通过加载使用可寻址资源时,Addressables会在内部帮助我们进行引用计数 使用资源时,引用计数+1 释放资源时,引用计数-1 当可寻址资源的引用为0时,就可以卸载它了 为了避免内存泄露(不需要使用的内容残留在内存中不释放),我们要保证**加载资源和卸载资源是配对使用的** 注意:释放的资源不一定立即从内存中卸载,在卸载资源所属的AB包之前,不会释放资源使用的内存 (比如自己(某个资源)所在的AB包被别人(另一个资源)使用时,这时AB包不会被卸载,所以自己(某个资源)还在内存中) 我们可以使用 Resources.UnloadUnusedAssets 卸载资源(建议在切换场景时调用) AB包也有自己的引用计数(Addressables把它也视为可寻址资源) 从AB包中加载资源时,引用计数+1 从AB包中卸载资源时,引用计数-1 当AB包引用计数为0时,意味着不再使用了,这时会从内存中卸载 总结:Addressables内部会通过引用计数帮助我们管理内存,我们只需要保证 加载和卸载资源配对使用...
U4S4L17——自定义更新目录和下载AB包
U4S4L17——自定义更新目录和下载AB包 本章代码关键字 1234Addressables.UpdateCatalogs() //更新目录,如果不传入由CheckForCatalogUpdates()获取的需要更新的目录字符串,则自动检查目录是否有更新Addressables.CheckForCatalogUpdates() //检查哪些目录需要更新,并将需要更新的目录字符串加载出来Addressables.GetDownloadSizeAsync() //传入要加载的资源的标签或者资源名,加载其对应的包的大小(字节数)Addressables.DownloadDependenciesAsync() ...
U4S4L16——关于Async Operation Handle
U4S4L16——关于Async Operation Handle 本章代码关键字 12345asyncOperationHandle<>.GetDownloadStatus() //获取当前下载状态的结构体DownloadStatus //加载状态结构体,获取到加载进度,加载字节数,总字节数AsyncOperationHandle //无类型的异步操作处理类,AsyncOperationHandle<>可隐式转换为它,也可以转换回去asyncOperationHandle.Convert<>() //将无类型的异步操作处理类转换为有类型的asyncOperationHandle<>.WaitForCompletion() //强制同步加载资源 获取加载进度 我们通过调用 AsyncOperationHandle<>.GetDownloadStatus()...
U4S4L15——异步加载的几种使用方式
U4S4L15——异步加载的几种使用方式 回顾目前动态异步加载的使用方式 12345678910var handle = Addressables.LoadAssetAsync<GameObject>("Cube");//通过事件监听的方式 结束时使用资源handle.Completed += (obj) =>{ if (handle.Status == AsyncOperationStatus.Succeeded) { print("事件创建对象"); Instantiate(obj.Result); }}; 3种使用异步加载资源的方式 事件监听(目前学习过的) 协同程序(协程相关知识详见:协同程序) 异步函数(async 和 await,详见:异步方法) 通过协程使用异步加载 12345678910111213141516171819202122AsyncOperationHandle<GameObject>...
P1L11——【git版本管理】汉化 Github Desktop
P1L11——【git版本管理】汉化 Github Desktop 汉化 Github Desktop 为了方便英文不好的同学在使用Git Desktop时更加方便,可以尝试将其汉化 该项目在Github开源:robotze/GithubDesktopZhTool: Github Desktop 汉化工具 支持 Windows Mac Linux 下载Release的最新版即可 解压后得到 双击运行后,点击汉化 点击确定 会自动打开Git DeskTop 汉化成功! 注意:如果你的版本较新,无法正常汉化,需要到其Github上下载最新的汉化包 取消汉化 如果想要取消汉化,打开汉化工具,点击还原即可
P1L10——【git版本管理】Git创建新的代码仓库,以及将已有项目存储为库
P1L10——【git版本管理】Git创建新的代码仓库,以及将已有项目存储为库 Github Desktop 创建新的代码仓库 1.认识界面 2.创建新的存储仓库 点击从本地磁盘上创建新存储库 在弹出窗口中填写关键信息 我的填写如下,路径可以自己找一个磁盘新建一个文件夹用于测试 点击Create repository 创建仓库后,创建成功,界面变为如下图所示 我们可以点击窗口中的在资源管理器中查看存储库文件按钮 便可以打开仓库所在位置 此时,我们便可以在这个文件夹中创建Unity工程,或添加想要被版本控制的文件了 3.为新建仓库添加文件,上传版本节点 我们在次路径中创建一个测试用的文本文件,里面随便编辑一些内容 回到Git窗口中 点击Commit to main 提交到主分支后,窗口刷新,表示当前版本没有修改 切换到History版本历史页签 4....
US2S1L11——坐标空间的变换规则
US2S1L11——坐标空间的变换规则 坐标空间的组成 想要定义一个坐标空间,我们必须要具备以下两点: 坐标原点位置 3个坐标轴的方向(三维坐标系中) 有了这两点信息,我们就能够决定一个坐标空间了 坐标空间之间的关系 在Unity中,世界坐标空间相当于我们的基础坐标空间,Unity中其他的大部分坐标空间,都是世界坐标空间的子坐标空间。 这些子坐标空间的原点和轴向的相关表示数据,都是基于世界坐标空间的。 因此,在Unity中坐标空间之间会形成一种层级结构,大部分坐标空间都是另一个坐标空间的子空间。 所以,Unity中的坐标空间的变换实际上就是父空间和子空间之间对点或向量进行变换。 坐标空间的变换矩阵 从子坐标空间到父坐标空间的变换矩阵: Ms−f=(∣∣∣∣XsYsZsOs∣∣∣∣0001)M_{s-f} = \begin{pmatrix} | & | & | & | \\ X_s & Y_s & Z_s & O_s \\ | & | & | & | \\ 0...
US2S1L10——坐标空间的变换
US2S1L10——坐标空间的变换 重要知识回顾 渲染管线(流水线)的基本概念是将数据分阶段的变为屏幕图像的过程 在渲染管线中的顶点阶段和光栅化阶段会对数据进行处理 其中最重要的一部分数据处理工作就是坐标转换、顶点变换等等 线性代数中的矩阵相关知识,主要就是帮助我们来完成变换的 我们可以通过平移 、 旋转 、 缩放矩阵来完成对点或向量的变换 坐标空间 坐标空间是一个用于描述和定位物体位置的数学概念。 它一般由一个基础参照物(原点)和轴线(相互垂直的轴线)组成。 常见的坐标空间包括二维平面坐标空间和三维空间 在三维空间中,通常决定一个原点 (0,0,0)(0,0,0)(0,0,0) 并使用三个坐标轴(通常是x轴、y轴和z轴)来描述点的位置。 例如,在三维坐标空间中,一个点可以通过其x、y和z坐标来确定其在空间中的位置。 关于Unity中坐标系的知识点,我们在Unity基础中的坐标系中已经学习过了 为什么有很多不同的坐标空间 我们在 Unity...
US2S1L9——复合运算
US2S1L9——复合运算 回顾各个变换矩阵 平移矩阵 [100tx010ty001tz0001]\begin{bmatrix} 1 & 0 & 0 & tx \\ 0 & 1 & 0 & ty \\ 0 & 0 & 1 & tz \\ 0 & 0 & 0 & 1 \end{bmatrix} 100001000010txtytz1 旋转矩阵 绕 x 轴旋转 β 度,旋转矩阵为: [10000cosβ−sinβ00sinβcosβ00001]\begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & cos\beta & -sin\beta & 0 \\ 0 & sin\beta & cos\beta & 0 \\ 0 & 0 & 0 & 1...