- 博客(99)
- 收藏
- 关注

原创 游戏开发中常用的设计模式
本文介绍了游戏开发中常用的设计模式,如工厂模式用于创建对象,单例模式确保全局唯一,观察者模式实现对象间事件通知,状态模式管理对象状态转换,策略模式提供行为选择,组合模式构建复杂对象结构,命令模式分离操作与执行,装饰模式动态扩展功能。
2025-01-19 16:49:06
1903
4

原创 【Unity】打包发布到微信平台详细过程
需要注意的是,如果你是小游戏创建者,那么允许你用HTTP协议,如果你想让别人参与测试和开发,让别人可以在微信里测试小游戏,服务器必须支持HTTPS。但如果你的小游戏规模较大内存消耗较多,那么需要把这里调大,否则不会通过编译。游戏AppID:微信小游戏ID,这个ID需要在微信小游戏平台上通过创建账号、建立游戏来获得,拿到ID后填这里,如果这里为空就无法执行程序。是游戏本体,需要放到你的资源服务器上(如七牛云cdn、腾讯云cos、阿里云oss等云存储),这个文件夹在服务器上的目录就是上一步骤中。
2024-09-12 11:10:34
9475

原创 【Unity】热更新框架之xLua
xLua是由腾讯维护的一个开源项目,xLua为Unity、 .Net、 Mono等C#环境增加Lua脚本编程的能力,借助xLua,这些Lua代码可以方便的和C#相互调用。自2016年初推广以来,已经应用于十多款腾讯自研游戏,因其良好性能、易用性、扩展性而广受好评。现在,腾讯已经将xLua开源到GitHub。
2023-12-30 02:30:44
7486
1
原创 网络协议序列化工具Protobuf
Protocol Buffers是Google的⼀种语⾔⽆关、平台⽆关、可扩展的序列化结构数据的⽅法,它可⽤于(数据)通信协议、数据存储等。Protocol Buffers类⽐于XML,是⼀种灵活,⾼效,⾃动化机制的结构数据序列化⽅法,但是⽐XML更⼩、更快、更为简单。
2025-08-14 11:20:23
262
原创 【Unity】GraphicRaycaster点击失效问题
当 GraphicRaycaster 组件所在的父节点点击无反应,但子节点点击有效时,通常由以下几个原因造成
2025-08-12 15:52:06
330
原创 【Unity】RectTransformUtility.ScreenPointToLocalPointInRectangle
RectTransformUtility.ScreenPointToLocalPointInRectangle 是 Unity 中的一个静态方法,用于将屏幕空间中的点转换为位于 RectTransform 矩形平面上的本地空间点。这个方法在处理 UI 元素时非常有用,特别是在需要将屏幕坐标转换为 UI 坐标的情况下。
2025-08-08 15:45:51
466
原创 【Unity】Unity中的StreamingAssets文件夹
StreamingAssets 文件夹是Unity项目中的一个特殊目录,用于存放需要在运行时访问的资源文件。这个文件夹中的文件会被逐字复制到目标平台的特定位置,并且保持原始格式,不会被引擎进行压缩或编译。
2025-08-05 10:23:29
1175
原创 C# StringBuilder类及其使用方法
在Unity开发中,处理字符串时经常会遇到性能问题,尤其是在涉及到大量字符串拼接或修改的场景。这时,StringBuilder类就显得尤为重要。StringBuilder类是C#中的一个非常有用的工具,它提供了一种高效的方式来处理字符串操作,尤其是在需要频繁修改字符串内容的时候。
2025-08-01 16:05:11
405
原创 【Unity】预编译相关宏定义
Unity包含一个称为Platform Dependent Compilation的功能。这包含一些预处理器指令,可让您对脚本进行分区,以便为受支持的平台之一专门编译和执行一段代码。你可以在Unity编辑器中运行这个代码,这样你就可以专门为你的目标平台编译代码并在编辑器中测试它!
2025-07-21 15:36:37
937
原创 【Unity】打包TextMeshPro的字体
在Unity中,TextMeshPro与常规 Text 组件相比提供了更高级的文本呈现功能,TextMesh Pro 可以处理各种语言,包括中文。我们可以轻松地在 Unity 项目中使用中文,而不必担心字体和布局问题。TextMeshPro需要的字体资源就需要我们自己去手动打包,这篇文章将详细介绍TextMeshPro字体打包流程。
2025-04-17 17:37:53
1109
原创 C# 对列表List中的元素的多个属性进行排序
这样我们就已经把此类以编号为基准进行了升序降序排列,若此时列表中有相同的编号,列表则会根据索引自动进行二次排列。但是若我们想通过自己的标准进行二次排列,例如按照Value的大小对此时的列表进行二次排列。使用此方法对类型枚举筛选后再去筛选类型中的其他数值进行排序也是一种非常实用的方式,可以快速完成对列表的排列。我们可以在升序或降序之后,再次进行多次的。例如此处有一个类,拥有的元素为编号和值。来进行对一个类的不同属性的多次排列。
2025-04-17 10:28:55
542
原创 C# 类库打包dll文件
在C#中,有多种方式可以对代码进行加密,以保护源代码不被轻易查看或修改,这里我们将C# cs类文件加密为dll文件的方式进行保护。
2025-03-02 02:48:22
1114
原创 常用的排序算法
简单说明:选择数组中的一个数作为基准数(一般是第一个数),并设两个变量low,high用于记录索引值,然后从尾端开始向前逐个比较基准数,直至某个数比基准数小,则将该数索引存入high,将该数放置于low索引上,然后从首端开始向后逐个比较基准数,直至某个数比基准数大,则将该数索引存入low,将该数放置于high索引上,如此循环,直至low=high,将此时的low索引存入中间变量,将基准数存入该索引上,此时原数组被分为了两边,左边小,右边大,然后分组进行上述操作,如此循环,直至正确排序。
2025-02-03 21:34:02
800
原创 【Unity】Sprite Editor 图集插件的安装与使用
将多张图片打包到一张纹理上的技术叫图集(Atlas)。原本图片一张张送到GPU渲染,如果打包到一张纹理上,就有机会将多个物件的渲染在一次DrawCall中同时进行。(不同材质球渲染管线在渲染时需要进行上下文切换,需要启动不同的DrawCall)图集的使用是一把双刃剑,散图和过分的合并图集,都会影响我们游戏运行的效率,最终导致性能降低、手机发热等情况,学会一定的准则,然后根据具体的应用场景去使用,才能发挥图集的最大功效。
2025-01-25 22:29:04
400
原创 【Unity】使用Canvas Group改变UI的透明度
在平时开发中,可以通过控制材质、Color改变UI透明度,除此之外还可以CanvasGroup组件来控制透明度。
2025-01-18 22:47:46
1353
原创 【Unity】Unity3D 屏幕适配详解
屏幕适配是游戏开发中一个非常重要的环节,它能够使游戏在不同的屏幕尺寸和分辨率下都能够正常显示,并且保持良好的用户体验。本文介绍了Unity3D屏幕适配的原理和实现方法,包括固定宽高比适配、缩放适配和等比例适配。通过设置摄像机的orthographicSize属性和Canvas的Scaler组件,我们可以实现不同的屏幕适配方式。
2024-08-27 11:22:08
3069
原创 【Unity】实现轮盘抽奖
"轮盘节点""轮盘旋转的圈数""轮盘旋转初速度""减速度""最低速度""轮盘剩余旋转多少时开始减速""轮盘中物体的数量""旋转停止的位置""精准角度"
2024-05-28 16:07:08
1153
原创 【Unity】免费的高亮插件——QuickOutline
开发中,我们有很多地方会用到物体高亮这个功能,网上搜索后大部分是HighLightSystem来实现的高亮功能,其实还有很多的方法实现物体的高亮。Outline And Silhouette:整个模型轮廓高亮+被遮挡的部分整体高亮;用法也超级简单,只要给你想要高亮的模型挂上Outline这个脚本就可以。查看Demo你会发现有五种高亮模式。Outline Visible:模型未被遮挡的部分轮廓高亮;Outline Hidden:模型被遮挡的部分轮廓高亮;Outline All:整个模型的轮廓高亮;
2024-05-22 17:30:15
2611
4
原创 【CocosCreator】对象池概念及创建
当我们需要创建节点时,向对象池申请一个节点,如果对象池里有空闲的可用节点,就会把节点返回给用户,用户通过 node.addChild 将这个新节点加入到场景节点树中。当我们需要销毁节点时,调用对象池实例的 put(node) 方法,传入需要销毁的节点实例,对象池会自动完成把节点从场景节点树中移除的操作,然后返回给对象池。每次创建都需要写一个新的对象池和脚本对象,不方便使用,于是自己封装了一个对象池基类,如果有新的对象池直接继承这个基类使用即可。关于 Unity 对象池的使用在下一章。
2024-05-21 11:04:43
1253
原创 【Unity】协程(IEnumerator)的使用方法介绍
协程,从字面意义上理解就是协助程序的意思,我们在主任务进行的同时,需要一些分支任务配合工作来达到最终的效果,稍微形象的解释一下,想象一下,在进行主任务的过程中我们需要一个对资源消耗极大的操作时候,如果在一帧中实现这样的操作,游戏就会变得十分卡顿,这个时候,我们就可以通过协程,在一定帧内完成该工作的处理,同时不影响主任务的进行。
2024-05-13 16:59:08
5579
1
原创 【Cocos入门】保存数据到本地的几种方式
选择哪种方式取决于你的具体需求,例如数据量大小、是否需要持久化、数据类型等。通常,对于简单的数据,使用cc.sys.localStorage就足够了;对于大型或复杂的数据,推荐使用文件存储。这是一个基于浏览器的LocalStorage API的简单封装,适用于小型数据的本地持久化存储。你可以将数据转换为字符串,然后使用cc.fs模块的API将其保存到文件中。这适用于更复杂的数据结构,并且会进行序列化和反序列化。cocos保存数据到本地。
2024-05-09 11:36:54
1670
原创 【Unity】虚拟摇杆控制的实现
手机游戏,经常会用到摇杆来控制角色,本文记录了如何在unity中用比较简单的方法制作摇杆,并且实现摇杆控制角色左右移动。
2024-04-26 15:42:28
824
原创 【Unity】详解Unity中的射线与射线检测
碰撞检测可以帮助我们实现诸如抵达某个地点自动触发剧情、判断子弹是否击中玩家等功能,但我如果想要实现如当鼠标悬浮某个人物上,自动弹出该人物信息,要如何判断呢?这时使用碰撞检测,从摄像机生成一个透明碰撞体朝着人物移动,等碰撞到了人物再弹出该人物信息?会不会太繁琐了。或许你又会想,若我直接生成一个足够长的透明碰撞体呢,是不是在创建的那一刻就可以触发该人物的弹出信息逻辑?没错这样的确可以,而这就是射线!不过是把无限长的透明碰撞体变为了无限长的一条线,仅此而已。
2024-03-17 02:27:56
7847
原创 [Cocos入门]缓动系统
相对于 easing,自定义 progress 函数可以更自由的控制缓动的过程。// 对所有属性自定义 progress})// 对单个属性自定义 progressscale: 2,// 注意,传入的属性为 cc.Vec3,所以需要使用 Vec3.lerp 进行插值计算})
2024-02-21 17:37:09
859
原创 【Cocos入门】物理系统(物理碰撞)
物理引擎默认是关闭状态以节省资源开销。但有一个区别,物理引擎的开启必须放在函数内运行,否则不生效。物理碰撞组件也同样具有碰撞回调函数。但如果要使用回调函数,则必须开启刚体的或者 在代码中写。执行顺序:onBeginContact > onPreSolve > onPostSolve > onEndContact上述回调函数的参数解释如下:contact: cc.PhysicsContact 碰撞信息self: cc.PhysicsCollider 自己。
2024-02-15 22:54:36
1363
原创 【Cocos入门】物理检测
CoCos中,物理检测也是物理系统的一部分,它不是用于检测物体的物理特性的,而是用来查询物体的(比如某个地方是否存在物理碰撞体)。其又分成:点检测、矩形检测和射线检测。点测试将测试是否有碰撞体会包含一个世界坐标系下的点,如果测试成功,则返回一个包含这个点的碰撞体。矩形测试将测试指定的一个世界坐标系下的矩形,如果一个碰撞体的包围盒与这个矩形有重叠部分,则这个碰撞体会被添加到返回列表中。射线测试用来检测给定的线段穿过那些碰撞体,我们还可以获取到碰撞体在线段穿过碰撞体的那个点的法线向量和其他一些有用的信息。
2024-02-15 22:51:42
1117
原创 【Cocos入门】物理系统
开启物理引擎后,游戏运行,会发现添加了刚体的节点会受到重力影响向下自由落体。物理引擎默认是关闭状态以节省资源开销。但有一个区别,物理引擎的开启必须放在。函数内运行,否则不生效。
2024-02-12 19:55:53
812
原创 【Cocos入门】场景切换(loadScene、preloadScene)
【代码】【Cocos入门】场景切换(loadScene、preloadScene)
2024-02-08 20:53:07
1762
原创 【Cocos入门】AudioEngine函数的使用
cc.audioEngine提供了不同的音效播放方法这些不同的播放实际上是Cocos帮我们区分了音频文件的类型。直接拿文档给的代码方法。
2024-02-02 00:37:58
971
原创 【Cocos入门】Cocos resources 加载资源
通常我们会把项目中需要动态加载的资源放在 resources 目录下,配合 resources.load 等接口动态加载。你只要传入相对 resources 的路径即可,并且路径的结尾处 不能 包含文件扩展名。所有需要通过脚本动态加载的资源,都必须放置在 resources 文件夹或它的子文件夹下。resources 文件夹需要在 assets 根目录 下手动创建。如下所示:resources 文件夹中的资源,可以引用文件夹外部的其它资源,同样也可以被外部场景或资源所引用。
2024-02-02 00:02:42
2244
原创 【Cocos入门】Cocos中的定时器 (setTimeOut 、setInterval、Schedule以及scheduleOnce )
延迟3秒后,输出abc,此后每隔1秒输出abc,重复5次。所以最终会输出5+1次abc。删除schedule(若要删除,则不能再使用匿名函数了,得能访问到要删除的函数)相当于一个全局的计时器吧,在cc.director上。1秒后输出abc,重复执行,每秒都会输出一个abc。每个继承cc.Component的都自带了这个计时器。以下schedule被删除后,并不会执行。删除计时器,3秒后不会输出abc。删除计时器,不会再输出abc。
2024-01-31 20:11:45
1908
原创 【Cocos入门】脚本生命周期简介及常用方法
脚本作为我们游戏的“灵魂”,往往不单独存在,而是经常作为组件的形式挂载到特定的游戏物体身上,比如: 游戏主角,敌人,Boss,子弹,建筑物…脚本的生命周期,也就是所挂载到的游戏物体的生命周期脚本的生命周期,就是挂载到的游戏物体“从出生到死亡”,所经历的一些事件。这些生命周期事件,是一些特定的方法,且是由 Cocos 引擎事先定义好的,在游戏的运行过程中,由引擎自动调用。这些生命周期事件,全部定义的 cc.Component 这个类中。也就意味着只有继承自这个类的脚本,才有这些生命周期事件。
2024-01-24 23:47:19
1073
【游戏开发实战】Unity从零做一个任务系统,人生如梦,毕业大学生走上人生巅峰(含源码工程 - 链式任务 - 主线支线)
2025-07-22
jdk-18.0.2-windows-x64-bin.exe
2025-05-20
Unity动画插件Spine4.2-2024-09-12
2024-07-04
开源网络资源管理系统-NetBox2
2024-01-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人