- 博客(158)
- 资源 (8)
- 收藏
- 关注

原创 Unity Shader实现线框效果(详细图解)
先上图看看效果:下面详细分享一下制作步骤吧:一、首先模型本身需要特殊处理二、编写Shadershader "Giraffe/Wireframe" { properties{ _Color("Color",Color) = (1.0,1.0,1.0,1.0) _EdgeColor("Edge Color",Color) = (1.0,1.0,1.0,1.0) _EdgeColor2("Edge Color",Color) = (1.0,1.0,1
2021-06-07 11:45:46
8002
6

原创 ShaderGraph节点大全
最近事情比较杂乱学习的内容也比较零散,所以也没怎么拿出来和大家分享。之前一直是代码编写Shader,ShaderGraph出了很久了,一直被我无视了,最近学习了一下ShaderGraph感觉真的让我又有了很多新的想法,在很多效果实现方面真的方便很多。因为原来就有写Shader的基础 ,学习起来不算太吃力,这里把学习到的内容在这里记录一些,当然不全是我 自己原创的内容,搬过来方便自己和大家查阅。ShaderGraph也有些要注意的:1.ShaderGraph只能用于新HDPR(高清渲染管线)和LWRP(
2021-05-13 16:55:01
19183
12

原创 Unity 实现2D地面挖洞!涂抹地形(碰撞部分,方法一)
总体效果可以看这篇:https://blog.youkuaiyun.com/ww1351646544/article/details/106410601这个案例使用的Edge Collider 2D 来实现在EdgeCollider2D组件下,可以通过给于Points顶点,EdgeCollider2D组件会按顺序将的所有的顶点用线段串起来,这些线段就是碰撞的范围。初始化时候把这个:一、给点四个边界点的位置二、因为计算需要,需要将第每个边分成多个线段。三,下一步就比较关键见了,当点击红色位置时候在环绕
2020-07-19 16:03:27
7653
13

原创 Shader实现瓶内液体效果
话不多说,先上图…需求:1.液体效果可变色。2.液体透明有折射效果。3.适应各种容器形状。4.随移动幅度进行抖动。实现思路:一、水平面的实现这个是比较简单的,设定一定的高度,有超过此高度的则进行一个片原舍弃。但片元的高度的本地的坐标,真实对比的高度是世界坐标,因此这里需要有一个坐标的转换的操作。设定一个值即当前点的裁剪的世界坐标高度,由外面的脚本传进来。然后每个片元高度转成世...
2019-08-06 17:28:50
6902
10

原创 空间变换矩阵
位置是怎么用矩阵是怎么变换到另一个坐标的?想要定义一个空间,必须知道三个坐标轴的方向,而这些数值是相对于另一个坐标空间的。我们需要知道所有的空间都是相对的,即每一个坐标空间都是另一个坐标空间的子空间,反过来也可以说是父空间。当给定一个点(a,b,c)时我们是怎么知道他的位置呢?1.从坐标空间原点开始2.向x轴方向移动a个单位3.向y轴方向移动b个单位4.向z轴方向 移动c个单位比如,...
2019-03-19 22:59:52
5938

原创 矩阵的几何意义
矩阵的几何意义:变换是指把一些数据如点,方向失量颜色等通过某些方式转换的过程。线性变换f(x)+f(y)=f(x+y)kf(x)=f(kx)上面的例子有点抽象,如缩放就是一种线性变换,如f(x)=2x可以表示一个大小为2的统一缩放,即经过失量x的模是原来的两倍。同样旋转也是一种线性变换。还包括错切、镜像、正交投影等…仅有线性变换不够的。我们来考虑平移变换例如f(x)=x+(1,2,3)...
2019-03-19 18:47:10
13487
1

原创 什么是矩阵
什么是矩阵矩阵,在数学上,矩阵是指纵横排列的二维数据表格,最早来自于方程组的系数及常数所构成的方阵。矩阵是高等代数学中的常见工具,也常见于统计分析等应用数学学科中。长这个样子:失量也可以转为矩阵,可以看成nX1的行矩阵,或1Xn的矩阵。矩阵列的运行比较复杂,下面就来一一探讨。矩阵和标量的乘法直接标量与各个分量相乘即可,不多废话了…同时kM=Mk即,谁在哪边都一样。矩阵与矩阵的乘法...
2019-03-19 16:55:24
39702
2

原创 Shader常用函数属性
Properties属性支持类型属性类型默认值的定义语法例子Intnumber_Int(“Int”,Int)=2Floatnumber_Float(“Float”,Float)=1.5Range(min,max)number_Range(“Range”,Range(0.0,5.0))=3.0Color(number,number,number...
2019-03-19 02:19:31
3119
3
原创 Unity Mirror 多房间匹配
本文介绍了使用Unity Mirror开发多人在线肉鸽塔防游戏的经验分享。重点探讨了如何通过MatchInterestManagement组件实现多个房间同时进行游戏的高效管理,并详细解析了相关代码逻辑与功能模块。旨在为开发者提供实用的技术参考和优化思路。
2025-02-18 17:39:14
1020
5
原创 ET6框架(十三)ET-EUI循环列表及红点树
我们需要在上一节的页面逻辑中RegisterUIEvent方法中添加列表项监听, 注意这里需要使用拉姆达列表式,为了热更新可以生效。在我们日常游戏开发中经常会有按或高亮提示的需求,可能我们会使用判断条件一个个按钮去判断,但更好的方法是使用EUI中的红点组件。再在ShowWindow方法中,利用RedDotHelper中的AddRedDotNode方法添加节点,这是逻辑节点上的操作。在页面显示处理中添加内容,指定列表项数量和显示切换,并添加HideWindow方法,在页面关闭时清理列表项。
2024-09-03 09:38:59
775
原创 ET6框架(十一)Actor消息
我们打开Server > Server.Hotfix > Login中添加下面两个脚本,用于处理客户端发送的C2M_TestActorLocationRequest以及C2M_TestActorLocationMessage类型的消息。再定义无返回消息类型,C2M_TestActorLocationResponse从客户端到Map服务器,指定类型为IActorLocationMessage,注意与普通消息不同这里需要固定字段RpcId。需要注意的是这里拿到的是客户端的Unit.以及记得为消息打上标签。
2024-09-02 09:40:04
878
原创 ET6框架(十)通讯消息编写
ET消息主要分为两类,一个种是普通消息,一种时通过Gate网关转发的消息叫Local消息这里我们编写客户端与服务器端通讯消息1.使用ResponseType : 指定指定回复消息类型2.在类型后使用 // IRequest 关键字指定请求消息3.消息第一个参数必须为 int32 RpcId = 90;4.消息回复类型需要使用 // IResponse 关键字指定为回复类型。
2024-08-31 11:26:02
789
原创 ET6框架(九)Protobuf消息使用
Protobuf是一个用于生前通讯消息的代码生成器。Prototbuf是一个Google公司提出的开源的轻便高效的结果化数据存储格式。相对于其他常见的序列格式如Json、XML等格式,Protobuf具有易用性更好,自动化,兼容性数量小,序列化及反序列化速度更快等优势。
2024-08-31 11:23:16
804
原创 ET6框架(八)事件系统
我们打开Client > Unity.Model > Codes > Model > Demo > EventType.cs 即可以查看目前工程中的事件我们可以此添加事件结构体我们还需要定义一个事件接收方法,创建路径文件夹及脚本在Unity.HotfixView > Codes > Demo > Computer > Event 创建脚本 InstallComputer_AddComponent.cs。
2024-08-30 23:11:20
753
原创 ET6框架(七)Excel配置工具
查看客户端游戏代码在Client > Unity.Model > Codes > Model > Generate 这个目录则是刚生成的客户端数据脚本。客户端的游戏数据将会存放在 ET\Unity\Assets\Bundles\Config目录下。1.在表结构中需要注意的是起始点必须在第三行第三列,且必需要为Int值的ID。所编译的数据将会存放在ET > Config 文件夹的.bytes文件中。在第一行第一列中输入则是对整个列的操作,如上图只会在客户端导出该表数据。对于单条数据的导出也是同样的用法。
2024-08-30 23:07:21
845
原创 ET6框架(六)Scene层级树
Scene为层级树的根节点,本质上还是一个Entity,Entity下也可以挂载其他Entity,也可以像树节点一样多层次挂载。无论挂载多少层Entity,Entity实体的Domain指代的就是Entity当前层次结果中的根节点Scene.Entity的Zone则代表当前所在Scene的逻辑索引Id,在服务器端可以被 当做区服的索引ID需要注意的是,Domain返回的是当前Scene的根节点,如在自己创建的CurrentScene下调用则拿到CurrentScene.
2024-08-29 11:50:46
1706
原创 ET6框架(五)ECS组件式编程
ECS即Entity、Component、System的简称,遵循组合优于继承的原则Entity(实体) : 实体是一个概念,是指存在你游戏世界中的一个独立物体,是一系列组件的集合。Component(组件) : 一个组件是堆数据的集合,不存在行业,只用于储存状态。System(系统) : 一个系统就是对拥有或多个相同组件的操作工具,只有行为没有状态也不做存储。(切记:切勿与Unity Dots中的ECS进行混淆,两者没有一点关系)
2024-08-29 11:47:12
617
原创 ET6框架(四)服务器架构发展
回到LoginHelper,在获得连接的Gate网关服务key后将消息返回给客户端,客户端向网关进行传输了C2G_LoginGate,让客户端与网关服务器建立正式的连接。最早的游戏服务器使用单台物理机单个游戏服务器程序进程,单线程无阻塞Socket连接所有玩家,同步间隔为每秒一次。第三代服务器架构又称三层架构,统一连接的网关,数据库交互的任务则交由数据库代理进程处理。第二代架构中由游戏服务器处理玩家连接及数据库存储的效率是非常低的,经过第三代的改进。这里会获取到所有网关服务器,并随机获得一个网关的配置。
2024-08-28 10:37:32
576
原创 ET6框架(二)Demo工程的运行及编译
4.打开工程后打开Init场景,再在Editor > Preferences > External Tools > 工程中选择编辑器工作VS2019以上或Rider 2021.2.2及以上版本。9.再在适用于Unity的工具中(只安装了Unity开发扩展才有) > 杂项 > 禁止完整生成项目 > 选择 false。2.复制地址后下载,在本人使用时ET已更新到最新9.0的版本,因此下载后需要切换分支到6.0版本。20.运行服务器后,再打开运行即可以看到几个小小人的出现及同步。8.再在 工具 > 选项。
2024-08-27 10:05:06
502
原创 ET6框架(一)介绍及环境部署
1.ET(客户端,服务器端)是一个开源的双端全栈式网络游戏开发框架2.ET服务器端是基于.net(.net core)开发的多进程分布式高性能游戏服务端3.ET客户端则是基于Unity3D游戏引擎。4.前后端均使用C#语言编写,可以轻松地做到逻辑共用。
2024-08-27 09:36:31
2330
原创 Mirror学习笔记(五)概念指南
有时候你不想使用Mirror类型生成序列化,则可以通过 NetworkWriter和NetworkReader来添加支持的类型。例如要对DataTime添加内容,可以参考以下例子:然后你可以使用DateTime 在你的[Command] 或 SyncList。
2024-08-11 16:46:04
1707
原创 Mirror学习笔记(三) 组件简介
身份验证器的一个派生至抽象类Authenticator,允许你自行实现所需要的身份验证。在资源菜单中,点击 Create > Mirror > Network Authenticator 自定义你的身份管理器。
2024-08-01 09:53:27
1567
原创 Mirror学习笔记(二) 传输协议
当使用传输协议,您需要将协议添加到Inner字段中,然后将Encryption Transport分配给Network Manager中的Transport.中间通过了Encryption进行加密。只需要输入你的EdgegapAPI密钥和你选择的唯一大厅名字(LobbyName),然后点击创建,就会部署完成,然后将为填写上大厅的URL.验证服务器公钥,如果不验证公钥,初始握手容易收到MITM攻击。而Ignorance是一种可靠的UDP传输协议,并且它提供了可靠的和不可靠的UDP协议。
2024-07-31 12:03:54
1226
原创 Mirror学习笔记(一) 简介
因此,在任何给定的时间,您都可以发现对象的Rpc/OnDeserialize/OnMessage处理程序何时由服务器通过NetworkClient.connection.remoteTimeStamp发送。这里就有100毫秒的时间差。早期版本通过NetworkTransform来实现,成本巨大因为需要包含一个4字节(float),甚至8字节(double),当在大型游戏中时,宽带压力会迅速增加。渲染器在原位置并平滑插值到Ghost对像的位置,这将提供非常平滑的结果,但创造和跟随会有更大的额外成本开销。
2024-07-31 12:01:24
1666
原创 关于Unity四种合批技术详解
1): 静态合批会优先使用,如果还兼容SRP Batcher则会同时使用2): 动态物体会优先使用SRP Batcher3): 非静态且不支持SRP Batcher才会检查启启用GPU Instancing4): 以上都不支持才会使用Dynamic Batching即: Static Batching > SRP Batcher > GPU Instancing > Dynamic Batching。
2024-06-14 14:26:07
11173
原创 Unity DOTS技术(十五) 物理系统
要解决性能的瓶颈问题,在DOTS中我们将不再使用Unity自带的物理组件.下面来分享一下在DOTS中当如何使用物理插件.
2024-06-09 09:50:35
941
原创 Unity DOTS技术(十四) Job与ParallelJob接口
4.需要注意的是在此多线程运算中不得使用Unity原有的类库进行运算,应当使用Mathematics进行运算。
2024-06-08 11:15:23
625
原创 Unity DOTS技术(十三) ComponentSystem及JobComponentSystem
1.继承ComponentSystem需要实现抽象OnUpdate()2.与SystemBase不同,ComponentSystem不包含LambdaSingleJobDescription,3.CompoentSystem的带代码都是在主线程上运行,不支持多线程.4.并不能在ForEach后面点出什么参数来编辑.5.功能上与SystemBase中使用主线程代码.Run功能类似,官方推荐使用.
2024-06-08 11:13:01
527
原创 Unity DOTS技术(十二) SystemBase修饰及操作
2.使用后必须对变量进行卸载,timeInt的类型是TempJob周期为4帧,我们可以使用WithDeallocateOnJobCompletion自动的在线程运行后进行卸载。1.在多线程中我们不能直接使用Int等类型,需要使用Native Container的内容,如上图我们使用了Native Container下的NativeArray的内容。在上节中我们讲到多线程操作,为避免对线程的操作导致数据错乱,我们需要为变量进行修饰.于是我们需要用到Native Container.
2024-06-07 08:55:36
523
原创 Unity DOTS技术(十一) SystemBase详解
在之前的分享中我们用到的系统父类有ComponentSystem主要操控主线程的,JobCoponentSystem主要操作多线程的.而SystemBase则可以兼容以上两者,操控主线程及多线程.
2024-06-07 08:54:13
973
原创 Unity DOTS技术(十) ChunkComponent块组件
块组件(ChunkComponent),与共享组件类似,但在共用组件时并不会将组件移动到新的块里面去.当将块组件的值进行修改时.将会把组件中的值进行一个统一的变化,不会产生一个新的组件。
2024-06-06 10:22:22
451
原创 Unity DOTS技术(九) BufferElement动态缓冲区组件
在之前的学习中我们发现Entity不能挂载相同的组件的.当我们需要用相同的组件时则可以使用.IBufferElementData接口动态缓冲区组件来实现。
2024-06-06 10:19:12
569
原创 Unity DOTS技术(八)状态组件
因为在ECS中没有回调,因而无从得知组件是否被销毁.所以我们需要使用ISystemStateComponentData.什么时ISystemStateComponentData状态组件?当物体被销毁时ISystemStateComponentData组件不会被销毁.因而我们可以在组件被销毁时在该组件中留下信息代表该组件的情况.
2024-06-05 11:23:07
378
RTVoice是一个语音合成插件,可以将文本转换为自然流利的语音
2023-07-02
OpenCVForUnity2.3.8提供了许多内置的图像处理功能和算法,包括图像滤波器、特征检测器、模式识别和机器学习等
2023-06-18
OpenCVForUnity
2023-06-14
Puppet3D-1.9V
2023-06-14
Shader实现瓶内液体效果Demo
2022-02-07
模型涂抹Demo 模型UV涂抹
2021-08-12
Unity Shader线框效果例子
2021-06-08
Unity绳子/绳索效果例子
2021-02-18
PostProcessing2017.zip
2019-10-12
AmplifyShaderEditor.rar
2019-08-20
关于Unity开发人体姿态识别问题
2023-06-16
优快云发布问题可以获得奖章吗?
2023-06-15
TA创建的收藏夹 TA关注的收藏夹
TA关注的人