![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Unity学习笔记
文章平均质量分 67
Cake_C
小呆子一枚,学吧学吧。 有什么疑问可能不及时看csdn,可以投送opelac@qq.com。有空就会回复!我自己不会的话也可以一起探讨~
展开
-
UnityMirror学习笔记(8):自定义类的序列化与反序列化
在Mirror中,只有序列化的数据能被网络底层接口传出去到其它端,然后再通过反序列化构造出这些数据对应的对象。默认情况下,只有官方的类,Mirror才自带序列化与反序列化方法。不过写自定义类的序列化和反序列化方法很简单:创建一个静态类,拥有两个静态方法:class BackPackItem{ public string itemName; public int num; public BackPackItem(string itemName, int num){原创 2022-03-04 23:04:36 · 1402 阅读 · 5 评论 -
UnityMirror学习笔记(7):SyncList与SyncDictionary
Mirror是一个简单高效的开源的Unity多人游戏网络框架。官方文档链接:https://mirror-networking.gitbook.io/docsSyncVar在大多数情况下都能很好的实现数据同步,然而一个脚本里最多只可以有64个SyncVar,因此需要学习SyncList和SyncDictionary来更好地实现多数据、结构化数据,在客户端和服务器之间的同步。SyncList声明与构造// 这里作为 NetworkBehaviour的继承类的 成员变量readonly Sy原创 2022-03-04 20:47:38 · 4298 阅读 · 1 评论 -
UnityMirror学习笔记(6):权限与运动控制
Mirror是一个简单高效的开源的Unity多人游戏网络框架。官方文档链接:https://mirror-networking.gitbook.io/docs在之间的几章博客里,已经基本介绍了UnityMirror的各种有用的概念。但是并没有详细介绍如何在Mirror中,随心所欲地控制任何一个对象。如果有读者仿照我之前的实验代码去自己实验,会发现很多问题,比如rigidbody.velocity,transform.position无法在本地直接设定等。当然可以通过[Command]等通知服务原创 2022-03-03 16:31:29 · 8166 阅读 · 5 评论 -
UnityMirror学习笔记(5):NetworkBehaviour 参数和方法接口 与 钩子方法 与 一些注意点
Mirror是一个简单高效的开源的Unity多人游戏网络框架。官方文档链接:https://mirror-networking.gitbook.io/docsNetworkBehaviour是Mirror中的核心脚本基类之一,有必要熟悉它。就像MonoBehaviour有许多参数接口(transform)和生命周期钩子函数(Awake / Start),继承自MonoBehaviour的NetworkBehaviour也提供了很多接口供我们使用,这里对常用的进行介绍。大多数参数都可以根据接口注原创 2022-03-02 15:03:53 · 7731 阅读 · 1 评论 -
UnityMirror学习笔记(4):创建自定义prefab,并解决网络ID引用数据不同步的问题
Mirror是一个简单高效的开源的Unity多人游戏网络框架。官方文档链接:https://mirror-networking.gitbook.io/docs必要性首先解释一下标题的含义,这里复现一下所谓网络ID引用数据不同步的问题场景。假设玩家A有一个跟随物,他不是玩家A这个对象的儿子,而是同级的一个对象。它拥有一个独立的网络ID(NetworkIdentity),我们希望一开始这个跟随物不存在,在玩家A召唤后才出现。并且玩家A引用到跟随物的网络ID,从而控制其跟踪自己。若此时又进来一个原创 2022-02-28 22:28:43 · 1852 阅读 · 1 评论 -
UnityMirror学习笔记(3):服务器与客户端间的函数调用,互发控制指令:Command,ClientRpc,TargetRpc
Mirror是一个简单高效的开源的Unity多人游戏网络框架。官方文档链接:https://mirror-networking.gitbook.io/docs从客户端发送指令由服务器调用APIMirror提供了一个特性Command来进行从客户端到服务器的远程控制指令,它的核心逻辑就是,当客户端的脚本调用此特性修饰的函数时,服务端的对应的对象执行此函数。这意味着函数中的代码不会在客户端执行。基本的用法是在需要进行远程调用的函数前编辑特性标签:[Command]void cmdRemot原创 2022-02-27 21:42:38 · 7733 阅读 · 0 评论 -
UnityMirror学习笔记(2):使用SyncVar进行数据同步
Mirror是一个简单高效的开源的Unity多人游戏网络框架。在这里按照油管dalao的教学流程,与官方文档学习常用的API及操作。https://www.youtube.com/watch?v=eFHDKflitqQ&list=PLkx8oFug638oBYF5EOwsSS-gOVBXj1dkP&index=1https://mirror-networking.gitbook.io/docsAPIMirror提供了一个特性SyncVar来进行数据同步,它的核心逻辑就是,当服务器原创 2022-02-27 15:41:12 · 6596 阅读 · 1 评论 -
UnityMirror学习笔记(1):安装与简单使用
Mirror是一个简单高效的开源的Unity多人游戏网络框架。在这里按照油管dalao的教学流程,与官方文档学习常用的API及操作。https://www.youtube.com/watch?v=eFHDKflitqQ&list=PLkx8oFug638oBYF5EOwsSS-gOVBXj1dkP&index=1https://mirror-networking.gitbook.io/docs安装Mirror在Unity商店中是免费的,因此直接加入自己的资源库并在导入即可:导入原创 2022-02-27 15:38:55 · 4381 阅读 · 0 评论 -
Unity学习笔记(10) Unity使用EZSoftBone实现2D骨骼动画飘带效果
EZSoftBone属实是一个棒的开箱即用的Unity插件,能帮助我们很容易实现Unity3D或2D中的飘带效果。是个开源项目,去Star!https://github.com/EZhex1991/EZSoftBone同时在Unity商店中可以直接获取到https://assetstore.unity.com/packages/tools/physics/ezsoftbone-148136使用方法b站有作者的全套教程,github上也有md文档可以看。https://space.bilibi原创 2022-02-10 16:10:49 · 2203 阅读 · 0 评论 -
Unity学习笔记(9) Unity材质属性块MaterialPropertyBlock——多个同类实例使用不同材质属性
在Unity中,默认情况下对同一个预制体创建出来的不同实例,是公用同一个Material以及Shader的,因此对一个实例的Shader属性修改后,别的实例也会产生相应修改,有种Shader的参数是静态的感觉。而如果需要不同实例使用不同的材质着色器参数时,就需要使用材质属性块MaterialPropertyBlock()。性能分析可以看这一篇,还是优化挺多的。使用方式也很简单: prop = new MaterialPropertyBlock(); GetC原创 2022-01-31 16:37:27 · 5076 阅读 · 0 评论 -
UnityShader实例(1) 基于2DSprite实现圆环
想要在Unity2D中实现一个漂亮的圆环,但是除了前面做过的各种笔记和自学,啥都不会,但是成功摸索出来,在这里记录一下理解流程。源代码和使用方式在最下面。2D圆环的最简单实现圆环最简单的实现就是自己画一个背景色透明的圆环:(下面是一张图片,不信你把浏览器背景色调一下)然后直接往场景里一放就行:当然这种方式很不行,拉伸大了之后模糊感太大,很难看,而且不易控制大小:使用Shader实现2DShader的简单探索(最终代码在最后)首先2D中用的都是Sprite做渲染,所有显然不适合直接用原创 2022-01-30 16:13:17 · 3649 阅读 · 0 评论 -
Unity小工具 姿态复制脚本——以骨骼动画关键帧跨动画复制为例
做骨骼动画动画时,想要让动画之间的过渡变得更好,想做一个新的AnimationClip将两个动画先后衔接起来。这里试了很久没法直接将两个不同动画间的关键帧进行复制,就写了一个脚本帮忙直接在物体上复制姿态,然后可以更好的操作进行动画。原理原理就很简单,深度优先搜索遍历物体的儿子们,将被复制的和复制的两个物体所有儿子的Transform设置相同即可。脚本源代码新建脚本复制进去即可,会自动编译using System.Linq;using UnityEngine;using UnityEdit原创 2022-01-29 14:24:32 · 3126 阅读 · 3 评论 -
Unity学习笔记(8) Unity残影效果整理,3D、2D、通用方案
Unity做残影效果是个不难的工作。但是一些细节会对使用方法产生限制,这里整理一下各种情况下推荐的残影效果实现方案1.3D网格 (高性能)2.2D人物 (非骨骼动画) (高性能)3.其它场景 (包括2D骨骼动画人物) (低性能)3D人物Unity3D的渲染主要是靠Mesh+Shader,3D场景下人物往往用SkinnedMeshRenderer做网格渲染,这样方便换装系统。无脑推荐这篇,针对使用了SkinnedMeshRenderer的网格(也就是带蒙皮的网格),无需创建新实例,而是直接调原创 2022-01-26 23:00:52 · 4613 阅读 · 0 评论 -
Unity学习笔记(7) Unity2D骨骼动画制作流程
素材制作用PS做一个将人物各个部件(骨骼)都分解开来的人物模型。导出时注意选择PSB模式,不然无法分层读取。导入Unity直接将PSB文件拖拽进去工作区,记得选择精灵模式为多图片模式:骨骼绑定进入Sprite Editor,用Skinning Editor模式:绘制骨骼用Create Bone创建骨骼。需要有一个骨骼能够联动影响其它骨骼时,先左键选中此骨骼,然后创建其他的。网格化可以直接使用Auto Geometry,调整自动网格化的参数,生成受到骨骼影响的网格:可以原创 2022-01-26 21:32:49 · 11386 阅读 · 5 评论 -
Unity学习笔记(6) UnityShader学习笔记_5:纹理的使用——渐变纹理与遮罩纹理
笔记都是照着“Unity Shader入门精要”摘抄的,为以后想要复习实现方便。渐变纹理这个比较简单,实际就是为了光照强弱表现更为直观化地控制。本质还只是色彩纹理,只需要将渐变纹理运用到漫反射光照控制上。Shader "Custom/Ramp Texture"{ Properties{ _Color ("Color tint", Color) = (1, 1, 1, 1) _RampTex ("Ramp Tex", 2D) = "white"{}原创 2022-01-20 22:05:50 · 1019 阅读 · 0 评论 -
Unity学习笔记(5) UnityShader学习笔记_4:纹理的使用——纹理贴图与凹凸映射
笔记都是照着“Unity Shader入门精要”摘抄的,为以后想要复习实现方便。纹理贴图本质上就是计算任何一个片元用贴图哪一个像素的颜色。这里主要是算在环境光计算中,从下面代码可以看出。代码使用上一节基于Phong光照模型,为之添加单张纹理计算。单张纹理贴图添加的代码在行末注释第一个字符是+号:Shader "Custom/SingleTexture"{ Properties{ _Diffuse ("Diffuse", Color) = (1, 1, 1, 1)原创 2022-01-20 17:11:31 · 1189 阅读 · 0 评论 -
Unity学习笔记(4) UnityShader学习笔记_3:标准光照模型的底层原理
笔记都是照着“Unity Shader入门精要”摘抄的,为以后想要复习实现方便。标准光照模型上面是考虑光照时抽象出的背景情况,光照模型Lighting Model就是用于根据材质属性、光源信息等得出在某个观察方向的出射度的过程。也就是着色(Shading)过程。标准光照模型使用自发光、环境光、高光反射和漫反射来叠加计算出摄像头看到的物体的光(颜色)环境光和自发光环境光是一个全局变量,在Unity中设置,在Shader中可以通过UNITY_LIGHTMODEL_AMBIENT获取。自发光暂时原创 2022-01-16 23:12:07 · 670 阅读 · 0 评论 -
Unity学习笔记(3) UnityShader学习笔记_2:一些渲染流水线的图形学知识 与 UnityShader编写实例
一些渲染流水线的图形学知识 与 UnityShader编写实例。笔记都是照着“Unity Shader入门精要”摘抄的,为以后想要复习实现方便。渲染流水线流程从虚拟的世界渲染到屏幕上的像素。也就是:1.从虚拟世界定义的各种几何图形——主要是三角形面,2.转换到数字世界裁剪空间的片元——是一个二维平面光栅化后的每一个"像素",但不是真正意义上的显示在屏幕的像素点,而是用于插值设置颜色的最小单位3.最后在输出到屏幕的一个个像素上。最主要的图形学内容是各种坐标变换。缩放、平移、旋转。涉及到很原创 2022-01-16 13:47:58 · 608 阅读 · 0 评论 -
Unity学习笔记(2) UnityShader学习笔记_1:UnityShader的基础结构
笔记都是照着“Unity Shader入门精要”摘抄的,为以后想要复习实现方便UnityShader是Unity在一般的编写渲染管线流程上,抽象出来的一层Shader编写接口,主要是指定各种着色器所用代码,当然还有其它一些内容。更方便快捷。使用ShaderLab这种说明性语言。一个UnityShader的基础结构Shader "ShaderClassName/ShaderName"{ /*第一行用于起名字,可以用'/'分割使得在Unity的Inspector面板中实现分类*/ Propert原创 2022-01-15 11:31:41 · 510 阅读 · 0 评论 -
Unity学习笔记(1) Chronos时间控制及应用案例
官方的教程足够用了,为了方便,在这里记录一下https://ludiq.io/chronos/tutorial导入Chronos组件。用Chronos控制各个物体的时间,本质上是通过控制物件参照的时钟,再在脚本中用Chronos帮忙做好的时间计算代理代替原来的物理/运动控制。第一步 设置参照时钟有三种时钟,一是全局时钟,一是区域时钟,三是本地时钟全局时钟只需要静态设置看向此类时钟,物件就能受到该时钟影响区域时钟是需要挂载在一个有触发器碰撞体的物体上,进入碰撞体内部的发生触发事件的物体就会被影响原创 2022-01-14 10:01:47 · 1691 阅读 · 1 评论