- 博客(44)
- 资源 (4)
- 收藏
- 关注
原创 Unity开发者快速认识Unreal 的C++(六)GameMode之PlayerController
函数创建了HUD,这块解释一下,HUD是头显的意思,和UI的区别就是HUD不具备用户交互的功能,他只是显示,UI是用户交互接口的意思,提供一些交互的接口,比如按钮,toggle等,GameMode默认设置HUD类,上图表明了HUD 再PlayerController的PostInitializeComponents函数中被创建。从图中可以得到的信息是:函数是PlayerController的一个组件初始化阶段函数,函数中包含三个比较重要的函数调用,
2025-08-06 10:21:56
352
原创 Unity开发者快速认识Unreal 的C++(五) 输入组件练习代码
基于第四篇的内容做了一个简单的移动,上篇中创建了一个Pawn,然后替换了默认的DefaultPawn,DefaultPawn中带有视角移动的代码,那自定的Pawn需要添加一个输入输出的代码,所有我创建的一个新的组件(UInPutAndMoveComponent)主要写输入的绑定和控制移动。这四行代码最让我花时间的是编辑器上的键值配置,出现的问题是回调函数的参数一直是1,然后反复的测试,最终发现,再配置完键值后,需要编译一下,才能有效果,嗯,就这个东西花了我一下午,十年老程序依旧粗心大意!
2025-08-05 19:51:59
192
原创 Unity开发者快速认识Unreal 的C++(四)Pawn和Actor
功能大概分为两种,左图是常量函数,基本上处理一些类型引用,,一种是功能函数,主要处理actor的自身属性,比如系统在调用actor时创建的SceneComponent,用来控制actor世界中的变换,这些功能函数就是对SceneComponent组件进行设置和修改(具体看逻辑实现)具有Actor一些通用的功能,比如SceneComponent,Pawn也是具有的,此外Pawn还拓展了一个组件InputComponent,Pawn对象创建时自动创建输入组件,然后并没有查找到相关的输入设置,
2025-08-05 14:26:23
875
原创 Unity开发者快速认识Unreal 的C++,BluePrint(三)
基础逻辑示例:比如说写一个物体向前位移的代码分析:首先该函数是组件的帧函数 TickComponent ,actor的帧函数是Tick1.GetOwner():返回的是当前actor的指针引用,该函数在ActorComponent中定义,也就是说所有的组件都可以使用此函数获取当前的actor2.在actor中使用FindComponentBy*(),获取挂载的组件,类似unity 的transform.find。
2025-07-31 15:00:23
338
原创 Unity开发者快速认识Unreal 的BluePrint(二)
没有总结,只有一点,挺好学的,主要就是有一些unity操作的习惯思维,导致在Unreal中找东西找不着,这是最难受的,接下来,就是把曾经使用Unity做的一些有特点的项目,使用Unreal重新制作一边,个人感觉做完三四个项目,应该会有很大的理解和提升!
2025-04-25 11:25:09
1177
原创 Unity开发者快速认识Unreal 的BluePrint(一)
十年的unity开发者,转战Unreal,本文是作者三天的工作之余,尝试制作的一个循环设置图片颜色 的功能,从代码开发,转化为可视化脚本开发,是思维上是有点难的,本文记录过程中遇到的一些问题和理解 记录在此,本人之前没有系统的学过和看过视频,看到视频都是半途而废,我觉得只有经历过制作过,才能对其中的思路有深刻的了解,使用BluePrint做的这个功能花费的时间很长,这也是我成为Unreal开发者的第一步!!基本的一些准备工作就不解释了,直接从BluePrint界面开始!
2025-04-22 11:29:56
773
原创 Unity基于屏幕空间的鼠标拖动,拖动物体旋转
未解决的问题:旋转都是相对的,怎么去处理,鼠标拖动物体,物体不动,相机去做围绕物体旋转,由于射线是相机空间发出的,同时相机也在移动和旋转,导致预期的效果不一样,希望有思路的同学可以分享一下,代码的核心在于,鼠标的屏幕偏移映射到物体的旋转角度,代码中是使用射线去检测的,检测帧间隔鼠标的位置对应物体上的旋转。//关键点就是,需要计算出 旋转四元数,然后把四元数应用到物体的坐标系,相当于旋转物体的坐标系(坐标轴)//两种情况,第一种是物体基于自身的坐标系旋转,第二种是物体基于相机的坐标系旋转。
2025-04-17 09:04:25
751
原创 Unity Shader 一句话带过(简单点学那么复杂干啥)
这篇文章主要的内容是渲染相关的知识,是最基本的常用的知识,以unity 的shader 脚本为例,结合图形渲染流程记录各个部分,个人接触shader已有几年的时间,从最初的无从下手,到现在随便添油加醋,深知初学者的不易下面是一个在网上找到基本的渲染流程图应用阶段:渲染数据准备,以及传入GPU渲染接口几何阶段:顶点着色器,曲面细分着色器,几何着色器、//可以控制的逻辑,常用的就是顶点函数,曲面细分函数和几何函数在个别平台不支持光栅化阶段:像素着色器其实就是对应的unity shader模板中的顶点函数和片元函
2025-03-26 12:22:57
316
原创 14. EntitiesSample_StateChange
我要设置鼠标范围的方块,通过spin组件标识在鼠标范围内的方块,鼠标外的方块没有spin组件,然后在作业逻辑中,需要执行两段代码,一个是查找有spin标识的实体,一个是查找没有spin标识的实体,这个是一个示例说明:对于不同的实体,拥有不同的标识,然后执行不同的job,上面代码完合成一个job,对于所有的实体,整体进行判断。SetStateSystem功能:设置颜色,旋转,添加旋转,移除旋转,激活旋转,不激活旋转,这些功能通过Mode枚举进行切换,调度不同的实体作业。
2024-06-23 23:51:19
199
原创 shaderlab 关键点记录
CanUseSpriteAtlas” = “[state]”使用此子着色器的精灵是否与 Legacy Sprite Packer 兼容。“RenderPipeline” = “[name]” //向 Unity 告知此子着色器是否与 URP 或 HDRP 兼容。“DisableBatching” = “[state]” Unity 是否对使用此子着色器的所有几何体阻止动态批处理。“PreviewType” = “[shape]” Unity 编辑器用于显示使用此子着色器的材质预览的形状。
2024-06-09 14:21:43
864
原创 2D图片的描边
UGUI已经开源了,特意扒了一下源码,outline组件中是通过ModifyMesh接口改变的顶点偏移,然后outline组件是继承自shadow组件,可以说是outline和shadow实现原理一样的,就是把图像进行偏移然后设置颜色,然后在渲染原图,也就是这个效果需要渲染两次,这面是顶点处理的回调函数。原理是找到边缘像素,然后设置颜色,边缘像素的特点是像素的八个方向的邻像素不全是透明或者不全是不透明,这样的像素就是边缘上的像素,下面是找到的shader源码,很简单。
2024-06-09 13:53:50
436
原创 EntitiesSample_12. FixedTimestep
这个系统标签标识这,系统在FixedStepSimulationSystemGroup这个组里面执行更新逻辑,FixedStepSimulationSystemGroup是一个固定真速度的仿真系统组。托管代码中使用World.DefaultGameObjectInjectionWorld这个接口和ecs进行通讯,查看源码可以知道,可以通过这个接口拿到ecs世界中的实体,组件 和 系统。2.给实体身上的组件设置数据时,可以使用这面的这个api设置数据。ok,就是个这,别的代码逻辑不需要在说了,之前都注释过。
2024-06-09 02:17:40
348
原创 EntitiesSample_11. FirstPersonController
因为相机是托管对象,需要像之前给托管对象赋值一样,函数不能打这个BurstCompile标签,主要的逻辑是获取实体,然后通过人物的位置和键鼠的数组,计算相机的位置,代码中采用了一种新的查询方式,使用ComponentLookup组件获取实体的位置组件。通过查看源码知道,Input类调用的是InputUnsafeUtility类,也就是键鼠的输入是一个非托管代码的封装,所以在ecs中可以直接调用,并且在函数中可以加上BurstCompile这个标签,下面是Input类的源码。3.控制System执行的顺序。
2024-06-09 01:54:07
444
原创 EntitiesSample_10. RandomSpawn
5.SpawnSystem的主要逻辑是:查找所有的NewSpawn组件的实体,删除这个组件,然后克隆新的预制体,然后调用job设置实体位置,这个调度是针对那些新生成的物体,新生成的物体都带有NewSpawn这个组件(也就是标签)2.如果需要在Job中对实体世界进行修改,那在job中需要ECB的ParallelWriter对象,通过源码可以看到出来ParallelWriter是ecb的一个内部构造体,里面包含了很多ecb的api。
2024-06-09 01:14:46
305
原创 EntitiesSample_9. CrossQuery
1.URPMaterialPropertyBaseColor:Unity.Rendering空间下的材质组件,该结构体拥有一个float4颜色的变量,赋值和其他的组件一样。在Chunk作业中,需要使用ArchetypeChunk chunk获取当前要操作的变量值,示例代码是这样的没什么好解释的,就是双循环判断距离。2.EntityQuery转数组。3.IJobChunk的使用。
2024-06-09 00:42:13
376
原创 EntitiesSample_8. GameObjectSync
1.UNITY_DISABLE_MANAGED_COMPONENTS:示例中使用这个宏,表示系统中是否需要托管组件的支持,在该示例中是需要访问托管组件的,所以这个值是false,在unity中,有的时候需要宏定义来区分代码,比如对应不同的平台编译不同的代码,通常在一下的位置添加脚本的宏定义。如果我们要在ISystem中控制托管世界中的对象,就需要找到上面创建的实体,然后获取引用设置组件的值,特别注意的是在所有的访问托管的函数中,都不可以加上爆发编译的标签。// 托管组件引用复制到非托管组件。
2024-06-08 23:57:30
527
原创 EntitiesSample_7. EnableableComponents
容易忽略的点是EntityQueryOptions.IgnoreComponentEnabledState,这个查询选项忽略组件的状态,都可以查询到,就像的Mono中,物体不激活,GameObject.Find是查询不到的。ValueRW的值和ValueRO的值有很大的关系也就是说,在修改组件的数据的时候,要看这个组件只读(RO)状态是不是true。1.早baker的时候使用这个api设置组件的状态 SetComponentEnabled,这个是baker类中的一个api。
2024-06-08 23:03:21
361
原创 Unity Standard shader 修改(增加本地坐标裁剪)
打开这个文件,发现里面引用的文件太多了,没办法全部复制到你的shader pass中,为了防止影响到原standard shader,我全部重新创建,最终的文件是这样的。找到这个文件打开,打开发现里面啥也没有一个判断,根据宏判断然后引用不同的文件里面的顶点片元函数,我需要的是在下面的文件里修改。注意点就是,找到对应的pass,不要复制错位置,要是不知道当前使用的pass,把pass注释掉,测试使用的pass。之后就能跑起来了,为了方便调试,修改shader的界面布局脚本,把需要裁剪的位置暴露给编辑器。
2024-06-08 13:56:19
579
原创 EntitiesSample_5. IJobChunk
/当区块中的一个或多个实体具有禁用的查询组件时,useEnableMask参数为true。//以上是百度的翻译,我的理解是 state.Dependency 类似于函数的回调,该系统依赖于事 务调度的完成。//创建一个事务,这个事务针对于LocalTransform,RotationSpeed组件的实体。//在执行中,需要判断一下,当前的实体的组件是不是禁用状态。//(这种传递和分配状态的模式。/// 通过成员变量的句柄确定实体。/// 函数的参数是固定的。
2024-06-02 22:14:52
442
原创 EntitiesSample_3. Aspects
SystemAPI.Query<RefRW<LocalTransform>, RefRO<RotationSpeed>>()的作用是一模一样的。//查询的条件就是包含这两个组件的RefRW<LocalTransform> ,RefRO<RotationSpeed>的实体。该示例重点是解释Aspects接口的使用,定义的VerticalMovementAspect结构体,只能是只读的结构体,成员也是只读的。//此方面的实例包装单个实体的LocalTransform和RotationSpeed组件。
2024-06-02 20:17:44
352
原创 EntitiesSample_2. IJobEntity
该示例主要说明的是: IJobEntity是实体处理事务的一个接口,在Execute函数中编写事务逻辑,通过参数对应操作的实体对象上的组件数据,然后在ISystem中的Update函数调度该事务,每帧执行,IJobEntity是处理事务的一个接口,之后还有其他的接口和该接口类型。// PostTransformMatrix是实体的一个变换矩阵数据,LocalTransform是实体本地变换,类似于Mono的Transform和Matrix.TRF(pos,rot,scale);//总累计运行的时间。
2024-06-02 19:41:28
437
原创 EntitiesSample_1. MainThread
/等待ExecuteMainThread存在了之后,才会执行OnUpdate,不想Mono一样,只能通过这种方式控制OnUpdate执行的顺序,官方示例HelloCube 注释理解:这是一个旋转逻辑的脚本,场景中存在一个挂载LocalTransform, RotationSpeed脚本的对象,控制该对象旋转。//查找每一个具有RefRW, RefRO组件的实体,然后遍历,跟新位置。
2024-06-02 16:48:12
354
原创 理解知识点和关键API
c:为了不影响主线程的性能,有时也会使用多线程处理一些事务,比如本地批量的文件处理,网络数据通讯等,但是使用线程的时候,我们无法访问Mono的对象,是因为线程本身是不安全,而Mono是安全的,所有在操作的时候会创建数据类,Mono去访问数据类,线程去访问数据类,隔断Mono与Thread线程之间的交互,如果遇到需要开启大量的线程,那程序的性能也会下降,因为多线程之间的通讯会产生大量的垃圾,然后触发多次GC,造成程序卡顿,假死等。上面代码的意思的创建一个长度500的数组,每个元素的类型是Entity。
2024-06-02 16:35:35
902
原创 unity 鼠标控制物体旋转
思路:获取物体当前的旋转(四元数)乘以 旋转的四元数(鼠标的方向以相机的坐标系生成旋转四元数,然后 转到物体坐标系下)
2024-05-23 22:38:19
892
1
原创 unity坐标转换
碰到过的坐标系:局部坐标系,世界坐标系,相机坐标系,ndc坐标系,屏幕坐标系,视口坐标系,极坐标系,重心坐标系。通过坐标系的描述类型分为:左手坐标系,右手坐标系,极坐标系,重心坐标系。大概就这么多,之后会继续补充,解释一下以上都是自己的理解!e:在ndc坐标系下,构建重心坐标系,计算三个点的重心坐标系的值。d:通过重心坐标系,三个的点的权重值,计算射线碰撞点的uv坐标值。c:获取当前坐标所在的三角面的三个点的局部坐标和uv坐标。//获取本地转世界矩阵乘以局部坐标。b:坐标转换到物体的局部坐标。
2024-05-19 13:27:12
1841
原创 UGUI无限滚动列表
正在忙别的东东,突然公司来了个需求,要加个什么无限滚动列表需求,再三确认,没错他就要这个(心想这玩意都烂大街,分分钟给你复制粘贴一个),然后就找啊找,找了一堆,没有找到正好对应需求的,然后找了个靠近需求的源码,改啊改,改啊改..... 我吐了!!!思路:1.无限滚动,Object肯定得重复利用 (位置循环)2.保证循序正确,如果当前界面显示3个image,那我就生成9个image,canvas左边三个,右边三个,一摸一样的(因为我就三个数据,如果要是做成游戏那种无限滚动用来显示不用数据的,需要加
2021-04-18 20:35:17
649
原创 Kinect Sensor Devices 和 LibusbK USB Devices驱动切换
在使用kinect for windows 开发时,我们安装完sdk ,我们发现使用的是Kinect Sensor Devices 这个东东,然后可以通过Kinect v2 Examples with MS-SDK 中间件,在unity调用kinect,或者官方的WPF的示例那样调用kinect1.安装完kinect for windows的sdk,设备管理器是这个样子的----------->2.然后我们右键驱动--->属性--->>查看驱动的状态 ...
2021-01-05 15:22:06
4245
1
原创 openframework 数字时钟
吹牛+注解: 开发了好几年的unity,偶然从游戏开发跳到现在的互动类的软件开发,虽然薪酬没有做游戏高,但是感觉对做这一行很感兴趣,一直到现在有两年,从kinect,雷达,leapmotion,等等各种传感器的接触,感觉做这种轻量型的互动软件很有意思!!! . , 在这个过程中经常会做一些非托管的调用和传值,刚开始做的时候真的是抓耳挠腮,渐渐的发现接触的一些帖子都是C++的,资料不是一般的全,之后就对C++产生的很深的兴趣,然后才想学习C++,看了几本C++的书,pdf,视频教程,发现没什么卵用
2020-12-31 14:29:24
379
原创 ShaderToy2Unity Shader 知识点记录
长途慢慢,唯剑作伴内容全部摘抄的,写在这是为了方便查阅类型对应 HLSL <-------> CGvec<n> float<n>mat<n> float<n>fract fracmix lerpmod ...
2019-12-12 11:48:35
405
原创 Unity与串口通讯
Unity与硬件交互的时候通常会用到串口,经常会遇到和硬件工程师对通讯协议,前段时间做这块的时候发现了好多的问题,踩了好多的坑,So,记录一下那些坑爹的东西1,unity使用的.Net的版本需要设置到4.0以上,2.0的.net是没有串口这个api的2,我们在查看SerialPort的文档的时候会发现,哇!这个和socket有点类似好多的函数都差不多,但是其实不是这样,串口发送数据的时候可...
2019-08-22 16:37:30
1446
原创 Visual Effect Graph 学习记录
程序之路,负重前行,端正态度,稳重,不骄不躁离上次记录过去好长时间,这段时间工作的很是压抑,一直找不到方向,往往自己干的都不是自己想要做的! 希望借这个帖子可以稳住自己的心态吧, 废话不多说了!!想了想写什么,,根据最近的工作涉及到的知识选择了VisualEffectGraph这块,说一说自己的理解1.VisualEffectGraphvxf是一个基于HDRP(高清渲染)的特效工具,...
2019-07-29 14:42:26
1866
转载 Kinect v2 Examples with SDK 例子解析资料
https://www.jianshu.com/p/c88bbc58a7bb 简书上一位高手翻译的,非常感谢,收藏了!!https://rfilkov.com/2015/01/25/kinect-v2-tips-tricks-examples/#t15aSDK 案例的原地址,多谢作者!!哎,好不容易才找到的两篇资料,实在不想吐槽国内的环境,心累!!!...
2019-03-19 17:04:55
887
原创 Computer Shader的理解记录
最近在做群聚项目,用到了Computer Shader,前前后后一个星期才弄明白computer shader是一个什么东西,(每次想到这,不是科班出身的我真的有这么菜么);1.Computer Shader是什么?度娘说这是Dx11的新技术,然后巴拉巴拉一大堆,看完之后好像度娘说的都很对,但是对我们没啥帮助0.0Unity里面有shader,着色器是啥,就一个GPU程序片段,那Com...
2019-02-02 13:36:05
4177
2
openframework 数字时钟
2020-12-31
libusbk(zadig2.5软件)
2021-01-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅