游戏开发
文章平均质量分 79
游戏开发相关内容,可能会有与 Unity 无关的部分。
魔术师Dix
API Caller
展开
-
【Unity】位图字体制作工具:蒲公英
一般来讲,如果需要制作位图字体,一般是使用 BMFont 这种第三方工具:然而这个工具对于非程序员来说,操作起来较为繁琐困难。每次美术修改了字体之后,需要重新导出,而且还要在Untiy中做数据转换,最后才能在Untiy中看到字体。这里为了方便工作流,制作了一个一键导出的 Unity 内置位图字体生成工具:蒲公英。摸鱼小分队 / Unity位图生成工具:蒲公英 · GitCodeUnity位图生成工具:蒲公英 直接在Unity中生成位图字体,不需要再使用BMEditor。原创 2024-05-05 13:50:41 · 648 阅读 · 0 评论 -
【Unity】LODGroup 计算公式
Unity 在配置 LodGroup 时,其分级切换的计算方法是按照物体在相机视野中占据的比例计算的。在运行时,如果相机视野范围(Field of View)没有改变,那么这个值可以直接换算成物体距离相机的距离。这里就讨论下如何计算得到这个距离。原创 2023-09-26 15:59:46 · 786 阅读 · 0 评论 -
Houdini19 命令行启动环境配置
在自动化流程中,通常都是从外部命令行启动 Houdini,而不是在软件里进行烘培和输出。完全体是通过类似 Jenkins 等自动化工具来启动 Houdini 自动生成流程。我使用的 Houdini 版本为 19.5.640,对应的 Python 版本为 3.9 。原创 2023-09-12 16:26:49 · 745 阅读 · 0 评论 -
【Unity】打包编译错误:‘NativeArrayUnsafeUtility‘ does not contain a definition for ‘SetAtomicSafetyHandle‘
解决 Unity 打包出现 'NativeArrayUnsafeUtility' does not contain a definition for 'SetAtomicSafetyHandle' 的编译错误。原创 2023-07-06 12:02:45 · 318 阅读 · 0 评论 -
【Unity】关于 Dots 创建Entity的开销
在 Dots 中创建实体的开销是很低的,但是其性能究竟如何?Unity 提供了单个创建 Entity 和批量创建的API,该如何选择?原创 2023-03-29 16:11:40 · 609 阅读 · 0 评论 -
Unity+GME 腾讯新版的游戏语音(游戏多媒体引擎)
前言:之前用的GCloudVoice,一个很坑的SDK。后来用着用着突然发现不能用了,神奇!然后去登录控制台一查,发现腾讯把这个东西的相关网页从腾讯云平台上删除了。现在只能在百度上面搜到他的原始网页,不过这些也不重要了,只要知道现在就用新的语音SDK:GME(游戏多媒体引擎)就好了。OK,在删除了腾讯云语音之后,现在开始重新学习新的SDK。正文:1、新的SDK接入首先从官...原创 2018-12-25 16:52:02 · 4867 阅读 · 2 评论 -
【Unity】UI ToolKit 学习记录
Unity推出的这个 UI ToolKit,据说是要用来替代UGUI。既然这么有野心,那肯定要搞来看一看。这次使用目标就是用这个 UI ToolKit 生成一堆类似HUD的头标,然后看看使用难易程度和性能如何。原创 2022-12-16 15:57:49 · 3529 阅读 · 1 评论 -
【Unity】UPM解决方案:苍耳
在进行Unity游戏开发的时候,一直有一个痛点,那便是相同功能的代码在不同项目之间如何共同使用?苍耳提供了一个解决方案。原创 2022-11-08 16:28:33 · 2095 阅读 · 2 评论 -
使用 Android Studio 给 Unity 打包 .SO 文件 (图文详细教程)
之前有做过给Unity打so包的工作,这里记录一下,以备不时之需。因为不是安卓开发,平时不怎么用Android Studio,所以就教程写得详细一些,方便以后照搬。原创 2022-11-04 16:24:30 · 2442 阅读 · 0 评论 -
【Unity】俯视角相机地面视野范围的计算
在SLG等游戏中,相机总是固定为俯视角(上帝视角)。为了更好地管理游戏数据,需要对地图进行分块,只处理视野内的部分。判定某个单位是否在视野内有很多方法了,但是要么不够精确,要么性能不够,要么无法与AOI配合。 一个可行的方案就是将相机在地面上的视野计算出一个AABB 2D 包围盒,然后基于此包围盒来计算 AOI、显隐等。这个方案效率够高,而且对俯视角适配较好。原创 2022-10-26 12:12:33 · 3868 阅读 · 5 评论 -
【Unity】关于 Unity Package 的 Version 格式。
在自定义 Unity 的Package插件的时候,我们需要编写一个Json文件:package.json 。 其中有个 version 字段,表示其版本,其值是一个字符串。本文旨在简单解释这个version字段的格式和规则。原创 2022-10-17 10:18:52 · 1218 阅读 · 0 评论 -
【Unity】相机视锥体剔除算法
视锥体剔除是Unity常用的剔除方法,其原理就是通过判定目标包围盒与组成相机视锥体的6个平面进行同侧判定,只要在6个平面之间的包围盒即为可见。本文根据其原理,给出一个视锥体裁剪的剔除算法的实现,并兼容ECS。原创 2022-09-27 21:03:36 · 3659 阅读 · 8 评论 -
【Unity】二维坐标映射成ID
在平面上,格子坐标通常是个二维坐标(X,Y),但是二维坐标有很多不方便的地方,且如果作为键值,其取值效率不高。因此大部分情况下,需要将二维坐标转换成ID来使用(且能从ID转换回坐标)。 常用的方式就是X*N+Y,N为一个足够大的数。但是这种方式有问题,其只能支持全正数或者全负数,一旦有正有负,就会坐标转换失败。因此需要一种较为便捷的算法,能将二维坐标映射成ID,且能互相转换。......原创 2022-07-14 11:05:01 · 1019 阅读 · 1 评论 -
【Unity】关于GPU异步回读Android兼容性问题
有时我们需要使用Unity的GPU 异步回读的功能,也就是使用如下API:AsyncGPUReadback 。那么这个API是否能无脑使用呢?他的兼容性如何呢?原创 2022-06-16 19:58:59 · 1995 阅读 · 0 评论 -
【Unity】六边形地图格子基础
这里的六边形地图,指SLG游戏中的大世界地图,用六边形的网格进行平铺。例如文明,以及部分SLG手游。这里介绍六边形地图格子的基本概念,以及具体数学实现代码。原创 2022-06-02 15:51:42 · 7467 阅读 · 0 评论 -
【C#】一个简单的伪随机方法
伪随机是游戏中常用的功能,但是我看网上的实现都比较复杂,或者不够随机(比如用线性同余法)。所以就自己实现一个算了,用最简单的方式。需求类似于抽卡那种,例如10连抽必中1张(概率10%),然后这1张在这10次里面是随机出现的。如果第一张就抽中了,那后面9张都不会中;同理,如果前9张都每中,则最后一张必中。实现算法基本思路如下:先获取一个概率(P),然后得到当前概率下的...原创 2022-02-17 20:10:53 · 1670 阅读 · 0 评论 -
【Unity】【ComputeShader】使用ComputeShader计算相机视野
前言: 设一个1024*1024的地块,需要实时计算有哪些地块在相机范围内。为了提高运行效率,这里用ComputeShader来计算。1、准备工作 先在Unity右键创建一个ComputeShader,然后再创建一个Canvas,放一张RawImage(用于接受调试用的图片)。 然后创建一个控制类,添加以下控制组件:public class ComputeTest : MonoBehaviour{ #region 外部赋值属性...原创 2021-09-11 16:37:12 · 910 阅读 · 0 评论 -
【Unity】Camera.WorldToViewportPoint 计算原理及实现
具体原理我是参考的这篇文章:https://gameinstitute.qq.com/community/detail/116994本地具体实现实现方法(不调用Camera的API)如下:1、获取相机的VP矩阵: 物体顶点坐标转换成屏幕坐标是用MVP矩阵,但是因为我们这边本来就使用的世界坐标进行转换,所以只需要VP矩阵即可。获取VP矩阵的方法如下: private Matrix4x4 Matix_V...原创 2021-09-06 15:15:28 · 3743 阅读 · 0 评论 -
【Unity】确保3D物体显示在最前的几种方法
前言:最近项目里有一个需求,要求某个单位(3D)一直显示在所有物体的最上层,哪怕他在其他物体后面。经过一番折腾解决了,这里提供几种思路。这里先起一个Demo,如下图:可以看到,黄色方块是在白色方块后面的。在Game视图中可以看到,黄色方块是被白色方块挡住了一部分。现在我们用一些操作把黄色方块提到最前。一、使用2个相机这种可以说是最简单的了:把主相机复制一份,然后剔除掉黄色方块的层。再在复制出来的相机里设置为Depth Only并且只照黄色方块的层:可以看到这个黄.原创 2021-04-01 17:54:59 · 7874 阅读 · 5 评论 -
【Unity】【UGUI】映射3D坐标到UI上(血条、人物状态)
把3D坐标映射到UI上,这种操作多用于类似血条、人物名之类的东西。这种其实是可以整个通用的方法来解决的:通过3D坐标直接修改UI控件的位置:原创 2020-12-27 14:47:51 · 1292 阅读 · 1 评论 -
【Unity】【Odin Inspector】关于AOT Generation
首先:Odin是一个绝对需要用的插件(稳赚不赔)但是Odin Inspector在手机上可能会有些问题……原创 2020-12-27 14:29:26 · 3665 阅读 · 5 评论 -
【Unity】判断 物体/坐标 是否在相机范围内
如何判定一个物体/坐标是否在视野范围内?本文提供三种解决方案。原创 2020-12-03 22:18:04 · 9884 阅读 · 4 评论 -
【Unity】:从【3ds Max】为人形骨骼 humanoid 添加动画
众所周知,Unity有的Fbx模型可以有一种人形动画,通过这种人形动画可以实现各种人形骨骼动画之间的复用。那么问题来了,如果我再3dsMax里做了一个动画,要怎样才可以用到我目前的动画中呢?原创 2020-09-04 14:41:21 · 4194 阅读 · 0 评论 -
【学习总结】Unity内存解析
前言之前看的一个Unity官方的视频:浅谈Unity内存管理(https://www.bilibili.com/video/BV1aJ411t7N6);觉得干货满满,但是一时又不能完全记下来,当时就想记个笔记。但是后面要么忘了,要么没时间,一直没有实现(主要还是懒)。这一次重新看一遍视频,再结合我自己的一些理解,一边学习一边总结。正文1、什么是内存内存分为物理内存、虚拟内存。关于物理内存:关于物理内存需要记住:CPU访问内存是一个满速过程。CPU在需要访问内存时,先是..原创 2020-08-25 23:11:40 · 1685 阅读 · 0 评论 -
【Steam】成就系统的制作及本地化
Steam的成就系统还是比较简单好做的,大部分API都已经弄好了。这里就把大概流程总结一下,方便以后查阅。1、SteamWork的设置在Steamworks网页的成就面板中,可以添加成就,默认是英文的。点击新成就可以添加一个成就:这个表格还是比较清晰的。值得注意的是,这个API名称就是你在程序里需要用到的名字,所以这个命名一定要规范。然后显示名称和描述就随便填了,看策划的配置。然后还有一个进度状态,一开始时没有进度的,只能选无。这个进度需要在统计选单里设置:...原创 2020-08-14 20:49:57 · 3906 阅读 · 0 评论 -
【Unity】FBX Exporter 的使用 (To 3ds Max 2018)
Unity版本:Unity 2019.4.4f13ds Max 版本:2018 (至少要 2017 以上的版本)1、导入FBX Exporter在Unity中,点击Window→Package Manager,然后找FBX Exporter;如果在左边的列表中找不到,则在Advanced中勾选 Show preview packages :选中FBX Exproter,然后点Instailling进行导入。之后选择Edit→Project Settings→Fbx Expo.原创 2020-07-25 18:53:15 · 19034 阅读 · 4 评论 -
【Unity】【UI Shader】关于用Shader实现字体的描边和阴影
前言描边和阴影,Unity本来是由自带的组件的(Outline和Shadow)。Unity自己的实现方式如下:Outline:把原文字/图片以往的网格复制4份,然后上下左右各偏移一点距离(相当于多绘制了4遍)。Shadow:把原文字/图片的网格复制1份,然后往某个方向偏移一点(相当于多绘制了1遍)。我觉得是挺蛋疼的,所以就突发奇想干脆用Shader来实现会不会好一点。正文:由于本人水平有限,所以大部分代码都是参考网上的。这里先上代码:// Upgrade NOTE: re.原创 2020-07-06 12:54:45 · 6831 阅读 · 1 评论 -
【Steam】关于上传游戏至Steam,Depot产生的问题
假设我的Steam appID 为 1000;我的第一个Depot 为 1001;第二个Depot 为 1002;在默认状态下,我用SteamPipeGUI,上传至1001是没什么问题的。但是上传至1002就出问题:ERROR! Failed to initialize build (Access Denied)ERROR! Failed building depots chunks研究了很久都没发现有怎么解决。后来知道是为什么了:这个需要在SteamWorks...原创 2020-06-10 10:48:17 · 7871 阅读 · 2 评论 -
【Unity】【PC】【错误上报】Bug上报插件 Trello Bug Tracker 使用介绍 (二):错误抓取部分
前言上一章(https://blog.csdn.net/cyf649669121/article/details/105637064)说了关于Trello这个插件的使用和用户自定义上报的部分,不过还需要实现的一个就是错误抓取的功能。这个就和手机上用的Bugly就很像了,就是抓取Unity控制台输出的报错和异常,然后分类上报。不过这个插件没有自己实现,需要我们自己来实现他。设想...原创 2020-04-21 12:39:27 · 1208 阅读 · 1 评论 -
【Unity】【PC】【错误上报】Bug上报插件 Trello Bug Tracker 使用介绍 (一):用户上报部分
前言最近需要做一个在PC端的Bug上报功能,之前的Bugly是用在移动端的,其实不是很适合。所以需要一个在PC端的Bug上报,然后在网上找到一个还不错的插件:Trello Bug Trackerhttps://assetstore.unity.com/packages/tools/integration/trello-bug-tracker-pro-75613不过网上对这个的介...原创 2020-04-20 20:22:36 · 1815 阅读 · 3 评论 -
【Unity】简易游戏存档
前言游戏存档的功能和重要性不需要过多叙述,实现的方法也很多样。对于Unity来讲,最简单的就是用PlayerPrefs来搞。但是就因为简单,所以能实现的功能也比较少。目前PlayerPrefs存些Int、String显然是不够的。所以推荐一个C#自带的序列化来做存档,简单易用,功能全面,而且简单,会一点C#就能会。原理用FileStream 和BinaryFormat...原创 2020-04-19 01:30:32 · 2435 阅读 · 0 评论 -
Unity3D插件 Doozy UI 学习(三):UI Element
前言之前写过一些关于DoozyUI的开发介绍,比较基础。后面用DoozyUI开发了一段时间,现在已经有了更深入的一些了解。这篇主要讲一下UI Elemenet这个脚本的使用。正文1、关于UI Element:如下图所示,Doozy UI的UI Element主要有以下内容。UI Element顾名思义,就是一个UI的最小元素。是作为打开、关闭的单位。通俗来讲,就是我们...原创 2019-10-12 12:06:57 · 3333 阅读 · 0 评论