![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
功能Demo
文章平均质量分 73
萧然CS
喜欢玩游戏,更喜欢做游戏
展开
-
【UGUI】ScrollRect 动态缩放格子大小,自动定位到中间的格子
实现效果:ScrollRect,格子动态缩放大小,滑动结束自动定位中间格子使用说明:目前只支持横向从左往右列表,格子锚点、中心点设置在左上角,Content,设置好Y坐标,运行时自动修改X坐标。实现原理:动态缩放功能实现:Transform改变时,计算列表可视区域内所有格子与列表中心的偏移量,根据偏移量缩放格子。 自动定位功能实现:初始化计算每个格子的位置,滑动结束后,计算每个格子到列表中心的偏移量,偏移量最小的格子就是列表最中间的格子,再把它自动移动到列表中心的位置,实现定位。.原创 2021-08-07 19:13:37 · 1202 阅读 · 5 评论 -
【Unity】使用LineRenderer实现闪电效果
参考http://Lightning - Procedural Lightning - AAA Quality, Performance and Sound. Dozens of Prefabs. 2D + 3D.,针对项目做了比较大的修改,原理是一致的:1. 使用LineRenderer组件随机闪电的路径;2. 通过截取材质贴图显示区域使闪电看起来更多样。using System.Collections;using System.Collections.Generic;using U..原创 2020-08-21 14:42:54 · 3872 阅读 · 0 评论 -
【Unity】滚动缩放关卡选择列表
简单实现,正式用时继续优化,现仅支持左右切换按钮点击,后续增加单元格面板点击切换,左右滑动切换···using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;public class UIChapterPanel : UIPanelBase{ private UIChapterItem[] chapterItemArray; priv..原创 2020-08-18 11:49:02 · 2445 阅读 · 17 评论 -
【Unity】战斗摄像机效果:视野拉近,屏幕抖动
通过缩放Camera的Field of View实现相机拉近/远效果,比如按下摇杆视野拉近,松开摇杆视野拉远利用AnimationCurve控制相机抖动曲线,实现类似爆炸效果视野震动using System.Collections;using System.Collections.Generic;using UnityEngine;public class CameraEffectTest : MonoBehaviour{ [Space] //震动时间 [Se..原创 2020-07-22 11:30:00 · 844 阅读 · 0 评论 -
【Unity】UGUI实现摇杆功能
using System.Collections;using System.Collections.Generic;using UnityEngine;using System;using UnityEngine.EventSystems;public class InputJoystick : MonoBehaviour{ //摇杆根节点 [SerializeField] RectTransform joystickRoot; //摇杆节点 [Seria...原创 2020-05-31 12:58:58 · 796 阅读 · 0 评论 -
【Unity】游戏中动态拷贝模型(网格/材质)
在游戏过程中,动态拷贝模型网格和材质球 : //拷贝当前模型 public static GameObject CopyModel(GameObject targetModel) { if (targetModel == null) return null; //获取子物体网格 SkinnedMeshRenderer oldMeshRenderer = targetModel.GetComponent<原创 2020-05-20 15:53:06 · 3448 阅读 · 0 评论 -
【Unity】解析Excel数据,并自动创建对应的C#类
参考:Unity C#配置表工具解析流程:1. 配置Excel2. 读取解析Excel (引用Excel.dll, ICSharpCode.SharpZipLib.dll)3. 重新整理解析到的数据4. 创建Excel对应的C#类,声明变量5. 在类的构建函数中给变量赋值6. 保存类文件,可在游戏直接使用优点:1. 每个Excel对应一个类,使用灵活......原创 2019-11-12 19:30:58 · 2642 阅读 · 0 评论 -
【Unity】解析Excel数据,自动创建对应的C#类,创建ScriptableObject的Asset文件并序列化
解析流程:1. 配置Excel2. 读取解析Excel3. 整理解析到的数据4. 自动创建对应的C#类,继承ScriptableObject,声明变量,保存.cs文件5. 自动创建ScriptableObject的Asset文件,并赋值,保存Asset文件6. 在游戏直接使用ScriptableObject类优点:1. 每个Excel对应一个类,使用灵活,对Exce.........原创 2020-04-18 23:31:27 · 2903 阅读 · 5 评论 -
【C#】敏感词过滤校验
敏感词过滤的方法有很多,如何能更快速更大范围的匹配敏感词?敏感词库小的情况,用正则、字符串匹配即可实现,还可以按照首字母对敏感词分组以提高效率。当词库比较大时,就需要考虑效率问题了···找了很多实现方法,感觉不是很适合现在的需求,于是自己尝试实现了一下,用的也是DFA算法。参考:C#敏感词过滤算法实现、Java实现敏感词过滤1. 创建敏感词库1.1 收集敏感词1.2...原创 2020-01-04 15:35:44 · 2112 阅读 · 2 评论 -
【Unity】UGUI不改变子物体顺序调整显示层级顺序
1. 顺便提一下UI格子的动态排序,即通过改变子物体顺序,调整UI显示层级顺序 //设为第一个子物体 itemButton.transform.SetAsFirstSibling(); //设为最后一个子物体 itemButton.transform.SetAsLastSibling(); ...原创 2019-12-24 18:33:37 · 6530 阅读 · 2 评论 -
【Unity】用Text+Image实现神奇的文字下划线
写需求的时候搜了一些文字加下划线的方法,UGUI的Text,大都需要写一堆代码来封装Text,比较麻烦考虑过用TextMeshPro,不过TextMeshPro不能公用Text的字体,有点坑利用Text加Image试了一下,实现效果看着还不错1. 给Text加一个Image作为自物体2. 给Text所在节点添加Conrtent Size Fitter组件,修改水平适配方式...原创 2019-12-09 18:23:02 · 3240 阅读 · 1 评论 -
【Unity】刮刮乐效果(擦除图片像素值)
实现类似刮刮乐效果,擦除图片指定像素值(修改图片Alfa通道)参考Unity刮刮乐工程源码的实现原理,对实现方式有一些调整这里RawImage需要保持原图大小,不能缩放,不然坐标计算会有偏差using System;using System.Collections;using System.Collections.Generic;using UnityEngine;u...原创 2019-12-05 21:02:07 · 4330 阅读 · 4 评论 -
【Unity】简易UI框架(带通知弹窗)
主要包含:统一控制Panel全屏界面面板及Popup弹窗的显示隐藏,通知消息弹窗,按钮自动添加点击音效UIManager:统一管理类,统一控制各个界面的显示及隐藏界面隐藏时,是将界面SetActive(false)了(没有写刷新函数,如果界面已显示,再次调用显示时,最好刷新一次界面),也可以直接Destroy(gameObject)销毁,下次显示时重新创建在加载创建UI界面时,会给...原创 2019-12-05 16:07:20 · 1870 阅读 · 3 评论 -
【Unity】3D场景角色血条/状态条
实现方式有很多,看哪种更适合你的项目:1. UGUI实现UI可以方便的实现血条等功能,只需要将角色的世界坐标转换为屏幕坐标,让状态条跟随角色即可问题在于,UI始终在屏幕最上层,如果有3D物体遮挡住角色,使角色不可见,UI状态条仍然可见(暴露玩家位置)using UnityEngine;using System.Collections;using UnityEngine.UI;...原创 2019-10-28 19:45:08 · 1824 阅读 · 0 评论 -
【Unity】获取模型的材质球贴图中的像素点色值
获取模型的材质球贴图中的像素点色值,可以计算模型贴图的RGB、或某个色值的占比,也可以动态修改指定像素色值。方式一:获取可读的贴图,并遍历像素点:(通过Texture获取Texture2D操作的运算量比较大,耗时长,推荐方式二) void CalculateColor() { //获取网格 MeshRenderer meshRendere...原创 2019-09-26 12:56:53 · 4027 阅读 · 5 评论 -
【Unity】UGUI拖拽格子交换位置
效果类似背包功能,可以随意拖拽位置,交换两个格子位置using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.EventSystems;using UnityEngine.UI;using DG.Tweening;public class ...原创 2019-08-21 19:53:49 · 2700 阅读 · 0 评论 -
简易的A*算法 自动寻路
参考:堪称最好最全的A*算法详解(译文)unity3D 简单实现A*算法路径计算方式(详见参考:堪称最好最全的A*算法详解(译文)):曼哈顿距离,横向和纵向直线距离,仅限于横向纵向移动 对角线距离,对角线 + 直线,可以横向、纵向、对角线方向移动 欧几里得距离,任意角度直线,任意方向移动using System.Collections;using System.Colle...原创 2019-04-05 09:18:27 · 1485 阅读 · 0 评论 -
关于贪吃蛇的移动的一个想法
最近闲聊时突然说到贪吃蛇,贪吃蛇的身体是由多个格子拼接成的,在移动蛇的身体的时候,要把每一个格子移动到上一个格子的位置。换一个角度,蛇在移动的时候,可以看作是,在最前面加一个body,最后面去掉一个body,中间的body不动。如果将所有的body放在一个list中,在每一次移动的时候,只需要在list最首位添加一个body,然后删除最末位的body,就完成了移动效果,这样不论蛇身多长,都不会...原创 2018-10-28 12:55:32 · 412 阅读 · 0 评论 -
游戏架构之模块间通信(消息机制)
一、先谈一谈个人对游戏框架的一点理解,顾名思义,框架是一个项目的骨架,如同大树的主干,搭建框架,在此基础上再加入各个功能模块,构成有一个完整的项目。如同一棵树有一个健壮的主干,再从主干上生长出一个一个的分支,最终长成一颗枝繁叶茂的大树。此外,框架会设定好模块的基本格式,更加有利于功能的模块化;框架还负责各个模块之间的交互,每个模块作为一个独立的个体,内部是独立运行的,如果模块间需要进行一些交互...原创 2018-10-27 17:23:54 · 2836 阅读 · 0 评论 -
【Unity】ScriptableObject 序列化游戏数据/保存数据到本地
游戏中经常会有一些需要序列化的数据,通常的做法就是把这些数据 [SerializeField],然后在视图面板中修改数值,这样不需要修改脚本,就可以进行数据调整,方便策划大大修改数值。 不过这样做还有一个缺点,因为序列化的数据都保存在Scene场景内,没修改一次数值,场景文件(Scene.unity)都会随之变动,多人合作时,场景文件就很容易发生冲突。在这里就给大家简单介绍一下利用Scripta...原创 2018-09-02 14:40:08 · 13246 阅读 · 4 评论 -
AES加密解密/本地文件读写/Json解析
关于数据加密,前段时间刚刚用过AES,这里就简单记录一下啦 大概思路就是: 1. 直接读取Json文件的数据,转换为二进制流 2. 对数据进行加密处理,得到加密后的二进制流 3. 将二进制文件保存到本地 4. 读取本地加密文件,进行解密操作 5. Json解析 (刚开始的做法,是把二进制文件转化为字符串,然后保存,在读取的时候出现了问题,报错存贮的和读取的字符串不一致,应该是中间数据...原创 2018-08-27 22:41:29 · 5522 阅读 · 0 评论 -
【Unity】金币数值变化动画
在最近项目里,每一关卡通关之后,都会增加金币,购买道具则消耗金币,在UI面板会实时显示金币数量的变化。为了增强游戏效果,给金币数值添加了一个动画,实现效果就是可以在指定时间内动态的显示数值变化。 代码也很简单,都不需要注释 ··· ··· public void ShowCoin(Text coinText, int coinValue, int changeCount = 10, flo...原创 2018-08-23 21:10:52 · 3764 阅读 · 0 评论 -
【Unity】屏幕截图
在游戏中经常会将游戏画面的截屏分享给好友,利用各平台所提供的SDK可以完美的实现分享功能,不过要截屏游戏画面,还是需要自己敲两行代码才行~我的做法是利用一个截屏专用的相机,先设置好相机的参数(Size,TargetTexture等 ···),将需要截屏的画面调整到相机前,调整好位置和大小,若截屏尺寸有多个,可以动态设置相机的参数,还有一点,记得要设置相机的Culling Mask~然后,上...原创 2018-08-19 21:54:20 · 294 阅读 · 1 评论 -
【Unity】动态创建地图及随机资源位置
最近结合之前的一个项目,做了一个简单的小Demo,主要功能是动态加载场景资源, 以Demo为例,要在地面随机生成一些树木,要求: 1. 游戏运行以后,动态加载; 2. 随机树木位置,要生成在地面,不能悬空或低于地面,也不能重叠,不然就尴尬了 (发现王者荣耀游戏开始的防御塔,也是类似效果,其原理就不得而知了) 主要说明还是写在注释里,大概思路这样: 1. 首先加载地形 2. 在...原创 2018-08-11 14:45:07 · 4582 阅读 · 2 评论 -
【Unity】动态生成关卡预览缩略图
最近做的一个2D小游戏,游戏的关卡选择界面,需要将关卡内容做成缩略图显示在关卡选择图标上面。随便百度的一个关卡选择界面,图一,游戏界面,图二,现需将游戏界面的内容,以缩略图的形式显示在关卡选择界面对应的图标 动态生成关卡预览缩略图动态生成关卡预览缩略图记录需要预览的关卡利用协程 依次生成预览场景,避免在某一帧做大量计算相机获取预览场景缩略图关卡图标赋值,显示缩略图显示下一个关卡...原创 2018-08-09 21:20:34 · 1115 阅读 · 3 评论 -
全局音效管理器
近期经常用到全局音效的管理问题,就直接写了一个管理器,因为是在小游戏里面使用,暂时只用到了这些功能,后面有机会以在继续补充···关于音效的动态加载,因为实际项目中并未用到(小游戏,采用序列化的方式),这里临时用Resources加载···话不多说,都在注释里using UnityEngine;using System.Collections;using System.Collect...原创 2018-08-08 22:49:26 · 2128 阅读 · 0 评论 -
【Unity】移动/动作残影效果
参考资料:Unity-残影效果实现Unity里的Mesh属性using System.Collections;using System.Collections.Generic;using System.Linq;using UnityEngine;using UnityEngine.SceneManagement;using UnityEngine.UI;public ...原创 2018-12-22 00:22:06 · 1897 阅读 · 0 评论 -
【Unity】利用三角函数曲线模拟2D水面波动效果(RwaImage像素点波动)
这里用的是正弦曲线:y=Asin(ωx+φ)+kA——振幅,当物体作轨迹符合正弦曲线的直线往复运动时,其值为行程的1/2 (ωx+φ)——相位,反映变量y所处的状态 φ——初相,x=0时的相位;反映在坐标系上则为图像的左右移动 k——偏距,反映在坐标系上则为图像的上移或下移 ω——角速度, 控制正弦周期(单位弧度内震动的次数)如图,利用正弦曲线将RawImage且分为上下两部分,...原创 2019-01-08 21:02:33 · 2768 阅读 · 2 评论 -
【Unity】利用三角函数曲线模拟3D水面波动效果(Mesh顶点变化)
这里用的是正弦曲线:y=Asin(ωx+φ)+kA——振幅,当物体作轨迹符合正弦曲线的直线往复运动时,其值为行程的1/2 (ωx+φ)——相位,反映变量y所处的状态 φ——初相,x=0时的相位;反映在坐标系上则为图像的左右移动 k——偏距,反映在坐标系上则为图像的上移或下移 ω——角速度, 控制正弦周期(单位弧度内震动的次数)利用正弦曲线修改Mesh的Y值,实现波纹波动效果。...原创 2019-01-08 21:06:57 · 1188 阅读 · 0 评论 -
使用柏林噪声随机创建像素地图
主要参考:Unity中使用柏林噪声生成地图using UnityEngine;using System.Collections;using System.Collections.Generic;public class RandomCreatMapByPerlinNoise : MonoBehaviour{ [SerializeField] Vector2Int map...原创 2019-01-23 17:31:06 · 1802 阅读 · 0 评论 -
A*算法 计算2D格子地图的最优移动路径
主要参考:unity3D 简单实现A*算法using System.Collections;using System.Collections.Generic;using UnityEngine;using SimpleFrame;public class GridManager : MonoSingleton<GridManager>{ GridContro...原创 2019-01-23 17:52:52 · 1171 阅读 · 0 评论 -
【Unity】系统通知弹窗(CanvasGroup组件实现淡入淡出)
发不了短视频只好贴张图了主要是在实现淡入淡出时用到了Canvas Group组件:组件比较简单,有四个属性:Alpha:透明度Interactable:是否禁用输入交互Block Raycasts:是否禁用射线检测Ignore Parent Groups:是否忽略父级Canvas Group该组件作用于挂载该组件的GameObject及其子物体。利用这一点,可以控制整个UI窗...原创 2018-11-27 21:00:11 · 2104 阅读 · 0 评论