『日常开发实用小功能』
文章平均质量分 82
仅此记录自己日常项目开发过程中实现的功能效果demo。
周周的Unity小屋
一名中国非著名Unity3D软件开发程序员,专注研究Unity3D虚拟仿真/VRAR/游戏领域。我不是大佬,只是在追寻大佬的脚步;正在持续学习成长中,也将持续为大家分享Unity技术干货!愿在此结识更多各领域开发者,相互促进,共同进步!
展开
-
Unity获取当前系统时间实时显示并格式化输出
我们希望在Unity开发的软件里面如果当前系统时间戳并显示在UI上,那么如何实现呢?其实很简单,C#为我们提供了一个关于时间的类–DateTime,调用该类下的方法即可获取当前系统时间。DateTime是.NET框架类库中的一个预定义类,用于表示日期和时间。它可以存储从公元0001年1月1日午夜12:00:00.000开始至今的时间,以100纳秒为单位(即Ticks)。DateTime类包含了许多用于执行与日期和时间相关的操作的方法,如加减时间间隔、比较日期和时间、格式化日期和时间的字符串表示等。原创 2021-04-12 20:00:00 · 3812 阅读 · 3 评论 -
Unity开箱即用的UGUI面板的拖拽移动功能
做PC项目时常常有面板拖拽移动的需求,今天总结封装一下,做成一个随时随地可复用的拖拽面板功能。原创 2024-07-01 00:03:50 · 705 阅读 · 0 评论 -
Unity编辑器右键菜单实现多平台游戏资源打包—AssetBundle的构建
AssetBundle是Unity提供的一种打包资源的文件格式,比如模型、纹理和音频文件等的各种资源,允许使用WWW类流式传输从本地或远程位置来加载资源,从而提供项目的灵活性,减少初始应用程序的大小。这里将以PC、Android、WebGL为例,添加编辑器右键菜单创建AssetBundle过程进行演示。流程为:选择预制体——点击鼠标右键——选择打包Bundle选项——选择目标平台——选择输出文件夹——开始打包。仅供大家参考学习。原创 2023-01-18 17:58:57 · 2246 阅读 · 8 评论 -
【Unity小功能开发实战教程】图片资源在Xml文件中序列化与反序列化的一种解决方案
项目中有引用到外部图片资源的功能(由用户选择),而且当用户下次打开这个项目的时候也要显示用户上次使用过的图片,这就涉及到了一个图片数据的可持久化存储问题。由于项目中的其他数据是保存到XML文件中的,所以本博客仅此记录Unity实现在Xml文件中图片资源的序列化与反序列化问题的过程,并给出Demo验证。通过本博客,你将学习到如果计算图片文件的md5,以及如何将图片保存到xml文件中。原创 2022-10-25 15:32:31 · 1598 阅读 · 9 评论 -
【Unity小功能开发实战教程】在UI画布上画网格线
在大多软件中,网格线常常起到辅助线条的作用,像word中的网格线主要用来帮助用户将word文档中的图形、图像、文本框、艺术字等对象沿网格线对齐,并且在打印时网格线不被打印出来。接下来,我们就学习一下Unity中如何实现在UI画布上绘制网格线。原创 2022-10-12 13:42:27 · 3007 阅读 · 5 评论 -
【Unity小功能开发实战教程】重写MaskableGraphic实现UI图片圆角化功能
项目中有遇到实现UI圆角化的功能,在网上看了一下,普遍是用Shader来实现的。但感觉用网上的Shader实现的圆角化跟传统软件(PS、 Word、Maya、AE)上的圆角化效果不太一样。最终还是决定用Unity提供的方法去实现圆角化功能。其实只要了解了圆角化的构图原理,很轻松就可以利用MaskableGraphic去绘制UI圆角了。原创 2022-09-29 11:40:57 · 3258 阅读 · 29 评论 -
【Unity实战技巧】教你4招计算UI物体的包围盒(Bounds)
使用Unity做UI的框选、对齐等功能时常用到包围盒(Bounds)的计算。如果UI在无旋转的情况下,只要知道UI的中心坐标和其大小(UI矩形宽高)就很容易计算出它的包围盒;一旦UI经过旋转之后,此时的包围盒的size并不等于该UI矩形的宽高,所以是需要经过一定的数学运算才能求出此时包围盒的size。本人在实际开发过程中,总结了4种Unity中如何计算UI物体的包围盒的方法(分有无旋转两种情况),详见博客内容。......原创 2022-08-17 14:04:01 · 3061 阅读 · 16 评论 -
Unity实现UI的边缘检测和拖拽拉伸功能
最近赶项目,许久没写博客了。今天忙里偷闲,记录一下最近项目里遇到的一个功能——拖拽UI窗口边缘拉伸其大小,基本上现在的PC端的软件窗口都有这个功能。该功能效果就是需要做成跟Unity工具栏中的矩形工具的功能一样,当鼠标光标移入UI的各个边缘区域时显示不同的鼠标光标,并按下鼠标往不同方向拖拽拉伸时能实时调整该UI的大小。所以总结了以下两点需求: 1. 鼠标移入UI时作边缘检测算法,获取该边缘类型的标识。 2. 根据边缘类型,在拖拽时动态调整该UI大小。详细实现请看博客,方位不唯一,欢迎各位开发朋友一交流原创 2022-08-09 13:36:24 · 6133 阅读 · 25 评论 -
【Unity小功能开发实战教程】制作跟随倒计时变化的进度条
进度条的值如何跟倒计时关联?其实就是将这两者做一个映射关系:进度条的值是0到1,倒计时为 0到总时间;映射公式为:value/1.0f=倒计时剩余时间/总时间;根据这个公式就可以在实现倒计时的同时去实时更新进度条的值了。具体看博客教程.............原创 2022-07-07 10:05:55 · 4502 阅读 · 16 评论 -
Unity使用MaskableGraphic画一条带箭头的线
绘制箭头线段的原理:利用UGUI的MaskableGraphic类我们可以重写OnPopulateMesh函数来绘制多个矩形面片,让多个矩形组成一根带箭头的线段。在一个大矩形UI框内重画一个右箭头的原理是:由R1、R2、R3和R4四个顶点画出右箭头的头部下半部分小矩形;由R1、R5、R6和R7四个顶点画出右箭头的头部上半部分小矩形;由R4、R8、R9和R7四个顶点画出箭杆小矩形。这样,我们只需要用9个顶点信息绘制出3个小矩形来构成一个箭头样式的线段了。同理可画出左箭头和左右双箭头线段。详见博客。......原创 2022-07-05 09:56:11 · 4693 阅读 · 3 评论 -
Unity在UI上使用MaskableGraphic类画一个矩形刻度尺
项目中遇到一个需求:由于模型和UI像素的原因,项目中用尺子测量东西的时候肉眼读数与实际误差过大,为了减少误差需要在unity中把尺子的刻度画出来。一开始我是有点懵的,心想这unity怎么能画出一个类似于刻度的矩形呀,后来经过组长的指导,了解到UGUI中有一个MaskableGraphic类可以画线,就研究了一下该类原理,得以实现需求。MaskableGraphic类画线原理实际上Unity中的每一个UI元素都是由三角面片拼接而成的,首先新建一个UI元素的空物体,新建一个脚本继承MaskableGraph原创 2021-11-01 11:35:20 · 2507 阅读 · 1 评论 -
Unity实现鼠标拾取电脑屏幕指定区域像素点颜色
开发时常遇到要动态修改物体或UI的颜色的需求,且需要像Unity编辑器一样弹出颜色选择器来选择颜色。我选择使用第三方插件ColorPicker来完成取色的功能。但在使用过程中我发现用取色笔取色时不能拾取屏幕外颜色。所以修改了源代码取色笔的功能,采取了.Net类库System.Drawing截取图像并转为Unity支持的纹理图像Texture的方法,将图像显示到颜色面板上,再利用texture.GetPixel方法获取该图像中心点像素颜色。满足了取色笔的功能,仅以此博客记录Unity取色笔功能的开发过程。..原创 2022-06-14 09:22:02 · 4173 阅读 · 32 评论 -
教你用简单上手的序列帧动画制作一个Unity的Loading加载界面
我们都知道电影或者说视频都是由一序列静止画面组成的。动画也是在一段时间内显示的一序列图像,每一帧较前一帧都有轻微的变化,当连续、快速地显示这些帧时,就会产生运动或者变化的错觉。基于此原理,我们Unity也有序列帧动画的概念,即我们可以在一定帧时间内改变Image对象上的精灵图,使数张“看上去相似、但实际上是有轻微变化”的图片交替更换,形成帧动画的效果。基于以上原理,本博客将演示如何实现序列帧动画效果制作一个Unity的Loading加载界面。......原创 2022-06-12 09:15:00 · 5137 阅读 · 19 评论 -
Unity实现对电脑文件夹和文件的重命名方法
项目中有导出文件或文件夹功能需求时,类似Unity导出包或打包exe一样,都要让用户选择路径,并输入指定名称,将导出的文件或文件夹命名为用户输入的名称。刚开始我想到的方法是使用System.IO命名空间下的File类的Move方法或FileInfo类的MoveTo方法来实现,但实践发现并不通用,我找到了一种在Unity中更实用的重命名文件夹和文件的方法,可直接对指定路径下的文件夹或文件重命名。本博客将演示用windows的库Microsoft.VisualBasic.Dll实现对电脑文件夹和文件的重命名方法原创 2022-06-05 09:00:00 · 6814 阅读 · 19 评论 -
Unity使用DOTween实现图片幻灯片渐变自动播放效果,超简单的
之前写了一篇实现图片渐变色效果的文章,有粉丝朋友留言说能不能写个实现图片幻灯片渐变效果的案例,那么现在它来咯!本篇博客将演示如何利用Dotween插件的队列动画实现这个幻灯片的效果。我们只要配合使用插件里面的sequence.Append()、sequence.Join()、OnComplete()和DOFade()这四个方法就可以实现图片渐变交替显示的幻灯片效果啦。原创 2022-05-21 15:30:31 · 6263 阅读 · 31 评论 -
Unity实现输入框InputField多行输入时自适应的方法
我发现在实际开发过程中,输入框不能像Text组件一样,简单的挂载自动布局组件,设置一下参数就可以实现自适应大小。解决方法及原理:在输入框InputField组件下添加一个空物体,并给空物体添加子物体Text组件,然后给空物体添加自动布局组件,并设置好参数。最后我们去写脚本,当输入框输入文字时,用代码控制空物体布局组件 实时刷新,并将其宽高赋值给输入框宽高即可。原创 2022-05-15 10:00:00 · 5962 阅读 · 18 评论 -
Unity实现UGUI空物体颜色渐变的描边方法
当我们有UI描边需求时,可以考虑使用Unity原生自带两个组件的Outline和Shadow实现对于UI的描边,但是弊端还是很大的,因为这个两组件会造成顶点数和三角面数加倍,导致就是很耗电脑性能!而且挂载到UI空物体上是没有描边效果的。我们只能另寻他法,UGUI为我们提供了一个类MaskableGraphic帮助我们可以自定义重构UI组件,博客将演示如何重写其 OnPopulateMesh方法绘制线框,实现ui空物体的描边,并且可以实现渐变色的UI描边。原创 2022-05-12 11:34:00 · 2689 阅读 · 34 评论 -
Unity获取电脑磁盘信息和文件信息
关于unity如何获取电脑磁盘和文件信息;本博客演示如果使用System.IO.DriveInfo类获取磁盘信息和使用Sytem.IO.FileInfo类获取文件信息,并说明为什么低版本unity使用driveinfo获取磁盘信息报错:NotImplementedException: The requested feature is not implemented.最后给出解决方法。原创 2022-05-05 08:30:00 · 2160 阅读 · 10 评论 -
关于Unity插件PopulationSystemPRO使用说明及无代码实现自定义路径寻路的三种方法
这里给大家推荐三种**用插件无代码**就可以实现**自定义路径寻路**的方法。下面将搭建简单demo场景演示如何使用三个插件实现无代码自定义路径寻路。用了这下面三款插件实现寻路功能,打包后也能寻路。一、关于PopulationSystemPRO插件导出后人物动画“失效”问题二、无代码使用自定义路径寻路的三种方法1、iTween插件无代码实现自定义路径寻路2、DOTweenPro插件无代码实现自定义路径寻路3、SimpleWayPointSystem(SWS)插件无代码实现自定义路径寻路原创 2022-05-04 08:30:00 · 4117 阅读 · 5 评论 -
Unity使用I/O数据流操作文件(读写文本、选择本地图片加载、选择文件并计算其大小)
工作开发中经常使用I/O数据流技术操作文件,包括读写文本,加载本地图片和其他文件等,这里我们使用I/O流很方便就能完成。通过本博客你就可以学习到如何使用I/O流操作文本啦!简单搭建demo场景脚本实现I/O流操作文件引用命名空间并定义UI组件在Start函数里为添加各个组件的监听方法将输入框内容写入文本文件读取文本文件内容并显示选择本地图片加载并显示选择本地模型并计算其文件大小注意事项及其他知识点demo演示效果原创 2022-05-02 08:15:00 · 3081 阅读 · 5 评论 -
Unity绳子插件QuickRopes使用方法(让你快速创建你想要的绳索效果)
从插件的名字就可以知道,QuickRope,使用此插件可以让开发者快速创建绳子、锁链等链条的工具,并可以模拟这些绳子的物理属性,自动生成绳子,可以编辑绳子属性,创建一条你想要的绳子。插件demo演示说明如何快速创建一条绳子或锁链绳子编辑脚本QuickRope说明基本设置:物理属性设置:链接处的预制体属性的设置Link Settings:绳子样条线可视化编辑器说明拓展功能说明(修改绳子长度、绳子断开)原创 2022-04-14 00:34:47 · 5830 阅读 · 4 评论 -
学习笔记---Unity画线插件Vectrosity实现音频可视化的一个方法
Vcetrosity插件的使用Vectrosity插件的介绍Unity音频可视化的一个方法实现的代码***实现的效果插件和demo下载地址:***Vectrosity插件的介绍在Unity中使用这款插件可以绘制2d/3d/贝塞尔/圆/椭圆等线条图案。使用步骤:1.导入插件包,引入命名空间using Vectrosity2.声明一个画线对象VectorLine line3.在开始方法里实例化VectorLine对象:4.设置位置坐标点到链表里去5.调用line.Drwa()方法即可绘制所需线原创 2021-09-06 11:04:43 · 2283 阅读 · 1 评论 -
Unity使用滚动条Slider控制声音音量
在unity如何利用Slider控制声音的音量呢?其实原理很简单:我们知道声音的组件【AudioSource】身上的属性“volume”是控制它的音量的,volume的值范围是0~1;而滚动条Slider组件的值Value滑动范围也是0到1,那么我们让volume的值由value控制就行了。新建空物体命名为Sound。为其新建子物体命名为BGsound,将声音文件拖进去,初始设置非激活:添加一个Slider和Toggle,slider的value设置为1:新建脚本AudioControl:挂原创 2021-04-17 12:57:44 · 14746 阅读 · 15 评论 -
基于Unity+SqlServer的登录注册功能的实现
基于unity2018.3.6+sqlserver2014实现的登录注册功能。我给我的VR系统毕设做了一个简易的登录注册功能。1.在unity里搭建了一个登录面板如下图:往视图里添加3个Text(登录信息的提示、账号密码输入提示),3个button(用来挂载登录注册事件、退出系统)和两个inputText(用于输入账号密码)。2.搭建注册面板:跟登录面板一样创建游戏对象就行了,不同的是,这里加了一个确认密码的输入框,不过这里的确认密码我没有加任何代码逻辑,只是个装饰,可用可不用,后面完善功能时原创 2021-04-01 16:51:29 · 4950 阅读 · 27 评论 -
UnityVR项目中常见的箭头导航指引功能的实现方法
要实现箭头指引的功能,其实就是将一张箭头的贴图赋值给材质球,再将材质球赋值给一个平面(Plane)物体,然后修改平面物体的Shader渲染模式,原理就是实现材质球贴图滚动的效果,要实现这个效果,原理就是不断改变贴图的offset偏移值,这个我们需要通过脚本编写代码去实现。原创 2022-03-14 14:50:15 · 4952 阅读 · 8 评论