UH——Unity热更新笔记
UH——Unity热更新笔记 热更新 游戏或者软件更新时,无需重新下载客户端进行安装 而是在应用程序启动的情况下在内部进行的资源或者代码更新 笔记代号 UH——即 Unity HotUpdate 的缩写 本笔记包括以下系列 热更新基础 —— AssetBundle 热更新方案 —— Lua相关 Lua方案基础 —— Lua Lua热更新方案 —— xLua Lua热更新方案 —— toLua 热更新基础 —— AB包的上传与下载 热更新方案 —— ILRuntime 常见的热更新解决方案 从早到晚包括以下的热更新方案 Lua —— xLua 或 toLua 都是内置Lua虚拟机,解释执行 Lua 代码 ILRuntime—— 内置 C# 字节码解释器,解释执行 C# 代码 Puerts —— 内置 JavaScript / TypeScript 解释器,解释执行 JavaScript 代码 HybridCLR(Huatuo)—— 在 IL2CPP 中添加一个可装载 C# 字节码,解释执行 C#...
U4S3L5——全景视频
U4S3L5——全景视频 Unity支持的全景视频 全景视频一般在VR项目中才会使用,我们也可以使用全景视频再游戏中来制作一些动态天空盒效果 等距圆柱投影布局(也称为球面投影、简化圆柱投影、矩形投影或普通圆柱投影) 的全景视频(视频宽高比为 2:1的360度内容 或 1:1的180度内容) 类似于这下面这种贴图: 立方体贴图布局(六个正方形纹理的集合)的全景视频(视频宽高比为1:6、3:4、4:3、6:1) 类似于下面这种贴图: 我们可以通过视频分辨率的比值判断该全景视频为哪一种 在Unity中使用全景视频 导入等距圆柱投影布局的视频文件 用Video Player以Render Texture渲染纹理播放视频 设置接受渲染纹理的天空盒材质,天空盒材质的着色器(shader)使用 Skybox>Panoramic(全景) 设置场景以使用天空盒材质 ——>...
U4S3L4——Video Player视频播放器
U4S3L4——Video Player视频播放器 本章代码关键字 123456789101112131415161718192021videoPlayer.playOnAwake //是否自动播放videoPlayer.renderMode //渲染模式VideoRenderMode //渲染模式的枚举VideoRenderMode.RenderTexture //要渲染的目标贴图videoPlayer.targetCamera //要渲染到的目标摄像机videoPlayer.targetCameraAlpha //视频透明度,渲染模式选择摄像机相关时videoPlayer.source //视频源VideoSource //视频源的枚举videoPlayer.clip //要播放的视频切片videoPlayer.url ...
U4S3L3——视频剪辑设置相关
U4S3L3——视频剪辑设置相关 为什么要对视频剪辑进行设置? 当我们将准备好的视频导入Unity后,我们可以选中该视频剪辑,并在Inspector窗口中进行设置 设置视频剪辑的主要原因: 预览视频效果 查看视频文件的基本信息 设置视频剪辑是否开启转码设置(重要) 通过对视频剪辑进行转码相关设置,我们可以保证在各平台都能正常播放 视频剪辑相关设置的主要目的,是为了设置视频转码相关方案,通过视频转码,可以让视频尽量支持各平台 关于各平台的转码规则 我们在上节课中就已经讲过 可用于硬件加速并且本机支持的最优视频编解码器是 H.264 当优先考虑跨平台支持时,VP8 是一个不错的选择。 VP8 得到广泛支持并具有全面的功能集,但与硬件加速的编解码器(例如 H.264)相比,需要消耗更多的资源。 在支持 H.265 的设备上可以使用 H.265。 Android 使用原生库支持 VP8,因此 VP8 在某些 Android 设备上也可能获得硬件辅助。 一劳永逸的方案是:mp4格式 + H.264编解码器,根据设备情况考虑使用 VP8 和 H.265...
U4S3L2——Unity中的视频兼容性
U4S3L2——Unity中的视频兼容性 Unity编辑器中的兼容性问题 对于我们来说,游戏发布的目标平台兼容性更加重要 mp4格式 +...
U4S3L1——视频格式和编解码器
U4S3L1——视频格式和编解码器 为什么学习视频格式和编解码器 视频格式和视频的编解码器,会影响Unity在不同平台是否能正常播放视频 所以我们必须简单了解视频格式和编解码器的本质,才能学习关于视频兼容性相关的知识 所以学了这节课,我们之后才能学习视频兼容性相关知识点 视频文件的本质 视频文件本质上就是一个“数据容器”,它不仅可以包含视频数据本身,它还包括: 音频 字幕 轨道信息(轨道还可以有多个,比如不同语言的字幕,不同语言的音频) 等等其它内容 不同格式的视频文件,比如.mp4、.mov、.avi、.webm等,他们表示视频文件中的数据是使用某种容器格式排列的 说人话:视频的本质就是一堆数据(图像、音频、字幕等等)的集合,不同格式的视频区别就是存读数据的方式方法不同而已 视频的编码器和解码器 我们了解了视频本质就是一堆数据的集合,为了节省带宽和存储空间, 视频中每个轨道(不同的音频,字幕等等信息)都使用“编解码器”进行编码和解码, 编码器负责压缩数据,解码器负责解压数据,通过他们对视频数据进行压缩和解压 常见的视频编解码格式为 H.264,常见的音频编解码格式为...
U4S3——视频播放
U4S3——视频播放 为什么要学习视频播放相关 在游戏开发中我们常常会有播放视频的需求,比如: 游戏开始时通过视频来交代游戏背景 剧情触发时通过视频来表现剧情发展 所以学习了视频播放相关知识点,我们就可以制作对应的功能需求 Unity的视频播放解决方案 几乎淘汰的Unity老版本功能电影纹理MovieTexture 目前主流的视频播放器VideoPlayer组件 第三方插件,比如AVPro Video等 他们都可以用于制作视频播放功能 我们将学习什么 我们在视频播放相关课程中主要学习,Unity提供的视频播放器VideoPlayer组件 只要是播放视频相关的功能,几乎都可以使用VideoPlayer组件来进行完成 它几乎能够应对日常开发中所有视频播放的相关需求 本系列学习内容 视频格式和编解码器 Unity中的视频兼容性 Video Player 视频剪辑设置相关 Video...
U4S2SL4——单例模式化的获取数据
U4S2SL4——单例模式化的获取数据 为什么要单例模式化的获取数据 对于只用不变并且要复用的数据,比如配置文件中的数据,我们往往需要在很多地方获取他们 如果我们直接通过在脚本中public关联 或者 动态加载,如果在多处使用,会存在很多重复代码,效率较低 如果我们将此类数据通过单例模式化的去获取,可以提升效率,减少代码量 实现单例模式化获取数据 知识点 面向对象、单例模式、泛型等等 我们可以实现一个ScriptableObject数据单例模式基类,让我们只需要让子类继承该基类,就可以直接获取到数据 而不再需要去通过public关联 和...
U4S2SL3——数据带来的多态行为
U4S2SL3——数据带来的多态行为 数据带来的多态行为 某些行为的变化是因为数据的不同带来的,我们可以利用面向对象的特性和原则,以及设计模式相关知识点 结合ScriptableObject做出更加方便的功能 比如随机音效,物品拾取,AI等等等 随机音效(里氏替换原则和依赖倒转原则) 播放音乐时,可能会随机播放多个音效当中的一种 物品拾取(里氏替换原则和依赖倒转原则) 比如拾取一个物品,物品给玩家带来不同的效果 AI 不同数据带来的不同行为模式 为了方便我们使用,我们可以利用ScriptableObject的可配置性来制作这些功能 其实下面的例子中的功能就算不用ScriptableObject也是能够用面向对象的思想,结合配置文件来完成的 但是ScriptableObject具备自己的几个优点 更方便的配置 共享数据节约内存 在实现某些功能的时候,使用ScriptableObject会更加方便我们的使用 举例说明 随机音效 123456using UnityEngine;public abstract class AudioPlayBase :...
CS5L13——LINQ入门实例
CS5L13——LINQ入门实例 LINQ 语言集成查询(Language-Integrated Query),也就是LINQ 语言集成的含义是,当你想对一个集合做查询操作时, 不再需要额外引用第三方库,而是可以直接使用原生的语法获取。 语言集成查询 (LINQ) 是一系列直接将查询功能集成到 C# 语言的技术统称。 数据查询历来都表示为简单的字符串,没有编译时类型检查或 IntelliSense 支持。 此外,需要针对每种类型的数据源了解不同的查询语言:SQL 数据库、XML 文档、各种 Web 服务等。 借助 LINQ,查询成为了最高级的语言构造,就像类、方法和事件一样。 对于编写查询的开发者来说,LINQ 最明显的“语言集成”部分就是查询表达式。 查询表达式采用声明性 查询语法 编写而成。 使用查询语法,可以用最少的代码对数据源执行筛选、排序和分组操作。 可使用相同的基本查询表达式模式来查询和转换 SQL 数据库、ADO .NET 数据集、XML 文档和流以及 .NET 集合中的数据。 C# 中的语言集成查询 (LINQ) | Microsoft...