1.3k 1 分钟

此文为热更新学习笔记记录 # AB 包 LZ4 比标准压缩程度小,但对于内存的占用相对较小,在使用时无需全部解压(推荐使用) ETI 在资源包中不包含资源的类型信息 FR 重新打包时需要重新构建包和 ClearFolders 不同,它不会删除不存在的包。 ITTC 增量构建检查时,忽略类型数的更改 Append Hash 将文件哈希值附加到资源包名上 SM 严格模式,如果打包出错,则打包直接失败 DRB 运行时构建 # 打包 进过 AB 打包后,我们发现生成了如下的文件: 其中包含我们的主包文件 PC 和我们的资源包文件 model。 打包完成的资源包以二进制存储 manifest...
1.8k 2 分钟

游戏编程模式算是一本比较著名的书了,全书针对游戏编程中的问题介绍了多种设计模式。学习设计模式可以加强我们的程序架构能力,写出更加强大和优雅的程序。 在线 C# # 写在前面 其实针对 设计模式 ,之前我就学习过《大话设计模式》自己也随书将二十多种设计模式实现了一遍;但我在学习游戏开发的过程中发现,标准的设计模式并非对游戏编程支持良好,故而有了专门看一看游戏设计模式的打算,加上寒假学习 cpp,让我有了拿起这本书的想法。 此文仅为学习记录,欢迎指正。 设计模式并不是刻意为之的东西,是前辈经验的总结,也许你在不知不觉中就已经使用了某种设计模式。 #...
1.8k 2 分钟

位运算符想必大家都听说过,那如何正确使用位运算呢? 今天,让我们来解决这样一个问题,用一个参数传递一组配置? 这并非是一个难题,学习过最基本的编程知识,我相信你会用 n 种方法来解决这个问题。 # 你可能的做法 配置项枚举类 /// <summary>/// 配置项枚举/// </summary>enum Config{ Item1, Item2, Item3}/// <summary>/// 显示配置信息/// </summary>/// <param...
399 1 分钟

上周我利用一周的时间完成了一个解密竞速小游戏,这也是没空更新的一个原因吧 因为时间比较短,就选择了 2D 项目来练练手,在人物角色控制写完了之后,就想着写个摄像机来控制视野,索性就想到了 Cinemachine ,记得之前好像看到 Cinemachine 有一套比较好用的摄像机系统,就拿来试试了。 # 效果预览 可以看到其效果包含以下几个方面 跟随玩家角色的移动 在小范围内移动不会触发摄像机位置的改变 摄像机缓动 摄像机视野不会超出地图范围 这几个效果自己手写还是挺麻烦,让我们来看看 Cinemachine 怎么做。 # 如何使用 创建一个 2D 虚拟相机: 2. 为虚拟相机指定...
6.5k 6 分钟

对 A * 算法早有耳闻,但一直未细致去分析过,最近重新看到这个概念,来尝试分析一波 # 算法定义 A* 算法常被表示为 f (n)=g (n)+h (n) **f (n)** 表示从状态 n 到达目标状态的花费的预测值 **g (n)** 表示从初始状态到达状态 n 的花费 **h (n)** 表示从状态 n 到达目标状态的花费预测值(最佳路径) 拖了蛮久了,差点我都忘记了我还有个博客等着我每周一更呢。 # 效果预览 # A* 格子数据 namespace FastyTools.Astar{ /// <summary> /// 格子类型 ///...
1.7k 2 分钟

# 快速食用 下载 inky 编辑器 编写 ink 文件 下载安装 unity 支持 找到 ink 示例,将对应的 ink 生成的 json 导入运行游戏即可。 # unity 使用流程 在 unity 中,我们需要通过代码来驱动我们的剧情的进行。 首先我们需要 创建至少2种Prefab ,一种表示文字,一种表示按钮。 然后我们需要创建一个 story 对象,载入对应的 json 文件 story = new Story (inkJSONAsset.text); 判断 story 能否继续,若能继续使用代码创建对应的游戏对象 while...
2.3k 2 分钟

本来说好的每周一更又鸽了… 今天来水一期,介绍一款很棒的剧情编排应用 YarnSpinner 。 # 介绍 YarnSpinner 是一款开源免费的剧情编排应用(或者说是一种用于剧情编排的标记语言)。 试想我们在开发游戏时,剧情有分支选择,有各种条件检查,如果我们全在代码中去判断和检查不仅繁杂而且非常麻烦,策划学习成本高,耦合性过强。你可能自己想出一套标记语言来表述剧情流程,但自己的力量毕竟是有限的,难免出现一些 bug 和坑。此时,不妨试试这款免费开源,多人共同维护的应用吧。 # 快速食用 # 代码式编辑 这里我使用 vscode 作为编辑器,下载一下插件: 我们先创建一个 .yarn...
2.8k 3 分钟

Unity 版本:2019.3.6f1 长文警告!!! 是否为摄像机脚本困扰?是否为镜头动画烦恼? Cinemachine 超强插件解决你的问题! 安装Cinemachine 现在 Cinemachine 作者已经投靠 unity 官方了,所以 Cinemachine 也成为了 Unity 的官方插件,我们可以直接在 PackageManager 中下载: 各类相机简述 安装之后我们可以在顶部菜单栏,看到如下的选项: 选项 说明 Virtual Camera 虚拟摄像机 FreeLook...
2.7k 2 分钟

对象池:在对象销毁时将对象放入池中,在使用对象时从池中取出对象,避免对象初始化和销毁时的昂贵代价。 在游戏中我们需要很多的对象,这些对象可能是动态变化的,例如射击游戏中的子弹,是不断计数的,游戏中的特效也是随着游戏不断增加的。如果我们每次在使用时创建在消失时销毁,务必会造成很大的开销,使用对象池的概念我们可以初始化一定数量的对象在使用对象时使用池中的对象,在消失时把对象归还给对象池,实现对象的复用。 # 单例模板 一般来说,对于全局的对象池我们需要一个全局的对象池管理器单例来管理所有的对象池。 在 unity 中我们会用到 2 种单例,一种是非 mono 单例,一种是 mono 单例。 #...
2.6k 2 分钟

在很多编程语言中都支持协程,例如在我们之前提到的 lua 中,协程是一个虚拟的线程技术。 # 简述 想一想我们平时购买电脑提及的,cpu 是四核八线程,其实 cpu 原先只能处理处理一件事,也就是说 cpu 默认是一个核心对应一条线程的,但是如果我们需要同时处理多个任务,而我们并没有那么多的线程数量。 然后前人们就提出了虚拟线程的概念,将 cpu 的单个线程,虚拟出多条线程,也就有了我们四核八线程,八核十六线程等的概念;在应用程序这边也有了线程和进程的概念,在把进程再细分,虚拟化软件的线程就得到了协程的概念。 至此你知道,协程就是对线程的再细分,是线程的再虚拟化即可。 # unity...