自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(85)
  • 资源 (11)
  • 收藏
  • 关注

原创 .Net 填坑 接口、父类、子类同名方法的调用

方法调用,要看调用方法的方式,实例方法与虚方法。实例方法,直接按变量类型,去找到对应的方法直接调用实例虚方法,找到变量实际的存储类型,去一层层找到有无复写的虚方法注意:new与override关键字的区别,特别是new关键字,可以当做是独立的属于类型自身的方法。

2024-08-12 17:47:20 515

原创 .Net填坑 C#中的按引用传递与按值传递

C#中的按引用与按值传递,与C++中底层原理一致,都是对变量本身传递其地址,还是传递其副本进行操作,在对这两种变量进行操作时,看起来一样的代码,a = 10,a.Test =10等,按引用会多生成一次取地址对应值的操作。备注:C#中应用类型变量本身就是指针的包装,所以按引用对托管堆对象操作时,会有两次取地址操作。

2024-08-08 11:00:56 1117

原创 【C++学习】C++中按引用传递与按值传递的具体原理

可以看出C++中按引用传递,与按值传递,编译器给生成两种不同的指令。按引用传递,传递的是变量的地址,有点类似指针传递(但是指针传递,需要新建指针变量,以按值的方式传递指针值,相当于间接引用),按引用传递比按指针传递更加简化了。最后可以看看,引用变量相关的汇编,也可以看出引用其实内部都是按地址处理的。int& c = a;*b = 3;c = 6;

2024-08-08 10:15:39 524

原创 ET9中ETTask传递新的Context原理

ET9作者猫大的创新以及设计能力确实强,新版的ETTask也确实牛逼,有了上下文确实能搞出很多花样了。

2024-06-27 18:19:47 849 2

原创 Unity填坑-CullingGroup的运用

CullingGroup可以提供对场景中对象的距离追踪,并提供回调效果。当然完全可以使用自己的方法,去每帧进行距离计算,也可以到达相同的效果。不过利用CullingGroup,进行摄像机的裁减回调还是挺好用的。比如有些纯表现的场景物体,直接SetVisable为false,可以提升不少性能。

2024-01-13 10:53:26 771

原创 Unity填坑-灯光烘焙相关

项目组对灯光烘焙那块参数以及工作流程有一定疑问,单独抽时间把整个机制做了一次单独的调研,错漏之处恳请指点。

2024-01-12 21:20:41 2160

原创 【Unity URP 小知识】SRP如何提升了性能

Unity使用SRP时,对我们封装了上面类似OpenGL的一大串功能设置及相关功能,且做到各个平台兼容。SRP Batch就是利用全局的数据缓冲的方式,以及局部修改的方式,来帮助提高渲染性能。

2023-07-07 15:44:18 788

原创 【UnityDOTS 小知识】如何通过DOTS修改材质属性以及替换材质与网格

修改材质属性,以及替换材质与网格,都需要对相应Graphic组件进行修改。材质属性需要映射到组件,而替换材质与网格,需要进行注册后,再进行替换(也是一种映射)。要注意的是,由于材质与网格都是托管对象,所以只能用托管ECS的方法进行逻辑处理。但是还是可以利用JOB进行效率提升(虽然不能用Burst了),例如使用Entities.ForEach。与ISystem的差异见下图。

2023-07-06 19:10:33 1342

原创 【UnityDOTS 小知识】在DOTS中实例化Prefab的方法

第一种方式,只是一种可能的ECS架构下的实例化方法。第二种方式,比较高级,但是用起来需要手动去创建所有相关的组件,更加灵活。但对于特殊的组件需要了解其添加方法来组合。

2023-07-06 17:01:36 812

原创 【UnitDOTS 小知识】ChunkComponet存储

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。

2023-07-06 16:45:31 203

原创 【UnityDOTS 小知识】如何异步利用Prefab实例化为一个Entity

利用RequestEntityPrefabLoaded组件,以及PrefabLoadResult组件,可以以异步的方式来获取对应Prefab的Entity原型。

2023-07-06 15:44:48 763 1

原创 【UnityDOTS 十三】Cleanup Component

一种特殊的组件,当Entity销毁时,要独立移除这个组件。意味着当你删除一个Entity后,这个组件还存在,那么该Entity也会存在。主要用于创建Entity时,进行初始化操作;或者销毁时,进行清理的操作。

2023-07-06 15:26:58 347

原创 【UnityDOTS 十二】Blob asset

Blob asset用于存储二进制数据,且为不可变数据。适合那种整个游戏只需要一份数据且不会改变的情况下使用,比如一些资源类的数据。

2023-07-06 12:18:29 399

原创 【UnityDOTS 十一】SharedComponent介绍

共享组件的值数组在单独的SharedComponentDataArrary中。每个Chunk中有一个单独的Handle指向这个值。所以这个Chunk中放的不只是ArcheType相同的Entity,他们所指向的ShareComponent值也是相同的。所以,不建议拥有大量独立值的ShareComponent存在,这样每个Chunk就只会放一个Entity了。要么会移到具有指向这个值的已有的Chunk中,要么新建一个Chunk来独立存储。可以把共享组件的值,视作为一种类型来对待。

2023-07-05 20:25:10 421

原创 【UnityDOTS 十】DynamicBufferComponent介绍

DynamicBufferComponent 作为一种特殊的组件存在,可以作为一种非托管内存下可动态调整带下的数组容器组件。

2023-07-05 15:42:56 289

原创 【UnityDOTS 九】Entity Command Buffer使用

Entity Command Buffer主要用于在Job中创建,销毁Entity,对Entity的Component的增加,删除。但无法实现对创建的Entity来setComponent。

2023-07-05 12:46:12 827

原创 【UnityDOTS 七】IAspect的使用

IAspect是Unity DOTS中用来更方便组织数据集合的接口。可以将我们需要的数据集合放到一个IAspect中,然后用这个自定义的IAspect去进行查询。

2023-07-05 10:37:47 784

原创 【UnityDOTS 小知识】RequireMatchingQueriesForUpdate与RequireForUpdate

例如:第一章 Python 机器学习入门之pandas的使用。

2023-07-04 19:16:18 939

原创 【UnityDOTS 六】预制实例化成Entity

部分自定义的组件,需要我们利用DOTS提供的接口,来转换成对应的Component附加到Entity中去。} }} }} }} }} }利用Baker转换对应的Component到对应的Entity中。定义一个自己想要添加到Entity身上的Component结构在想要挂载这个Component的Entity对应的GameObject身上挂载一个MonoBehaviour脚本,脚本的内容就是你想要转换为对应Component的内容。

2023-07-04 18:51:19 1058

原创 【UnityDOTS 小知识】Job的依赖项

因为Job多数都是多线程处理,所以处理好线程之间的依赖关系就很重要。类比于Task之间的依赖处理。

2023-07-04 16:10:26 336

原创 【UnityDOTS 五】遍历与查找数据(重点)

一般的逻辑步骤:先查找到一大片符合你要求的数据集合,然后再遍历这些集合中的数据,然后根据你的算法或者要求去更新、计算这些数据。例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

2023-07-04 12:21:07 1075

原创 【UnityDOTS 四】System的理解

SystemGroup可以用来管理组内的System,也可以使用Enable来控制整个Group是否启用。备注:需要控制SystemGroup的空跑Update,原理与MonoBehavoiur类似。在System中尽可能不要定义Public数据对外提供数据功能,破坏了线程调度的安全性(虽然System在主线程中运行,但是对外提供比如对Job提供了访问数据的功能,就会造成线程不安全)。

2023-07-04 10:36:41 939

原创 分享一个RVO2算法的讲解视频

5.如果没有交集,新增一个方向向量C(垂直朝向约束平面外平面方向,内方向是满足约束平面的法向量),将C增大,直到有交集,这样就构建了一个3D线性规划(使用随机点法求解)。4.如果有交集,满足这些约束平面交集下的,一个2D线性规划(最佳速度,选择速度)最小差值,使用内点法求解。3.得到速度障碍域下的速度约束平面(即我选择什么速度,可以避免碰撞)2.得到自身相对其他每个机器人的速度障碍域;1.抽象为速度坐标,方便计算与直观感受;3.这些速度约束平面的交集。

2023-07-03 10:49:27 728

原创 【UnityDOTS 三】Component的理解

Component作为ECS中承载数据的结构,了解他相关内容是非常必要的,面向数据的设计,就是要设计好Component。提示:以下是本篇文章正文内容,下面案例可供参考Unity中提供了各种类型的Component来让玩家继承使用。其目的主要就是用来提升查询效率,高效地组织数据。看文档里面也是各种各样的,看起来头疼,还是在后面的使用中慢慢一个个认识他们吧。

2023-07-02 14:05:53 460

原创 【UnityDOTS 二】Entity的理解

ECS作为DOTS中的一种面向数据的设计思想,理解内核还是很重要的,后续再加上其他内容。

2023-07-02 13:29:31 1003

原创 【UnityDOTS 一】JOBS理解

JOB作为DOTS中重要的多线程工具,使用起来感觉相对简单易用。但其实多线程,能够用起来还是很多要注意的,稍不注意就有各种奇奇怪怪的问题。个人之前很喜欢单线程开发,就因为简单,大脑想问题也简单,出错也容易找。多线程就麻烦多了,而且出错也难从断点找根源。希望JOBS这个工具,能解除这种恐惧。

2023-07-02 11:28:53 974

原创 C#闭包的原理理解

分别对应生成的代码如下:注意红色位置的区别,所以第一个输出:5,5,5,5,5;第二个输出0,1,2,3,4。第一种只会生成一个类实例(这个类是C#编译器帮我们自动生成的,匿名函数又使用了局部变量时),第二种会生成5个类的实例。[在这里插入图片描述](https://img-blog.csdnimg.cn/1b703eca284744999b64b50a3baa9322.jpeg。生成的代码:只会生成一个类的静态委托,这样可以节约性能,不用new新的对象了,只用new一次委托对象。

2023-04-26 20:03:15 257 1

原创 【无标题】

liner空间:真实的物理空间,光线强度线性变化,使得渲染明暗也是线性变化的。gamma空间:由于人眼对于偏暗部分更加敏感,所以显示器做显示,会弄一个gamma2.2(大家约定的的一个值)的修正,即对原本的线性效果做个2.2次方,使得正常的光强强度变化,渲染出的效果会偏暗(强度在0-1范围)SRGB空间:美术画贴图的时候(PS导出时),会对这个图做一次gamma0.45的反修正,这样这张图经过显示器,0.45次方 之后,再2.2次方,就和liner效果一样了。

2023-03-27 12:29:36 314

原创 目标文件(.obj)的COFF文件结构

x86平台下,目标文件(.obj)的COFF文件结构,后面再来详细介绍。

2022-09-04 10:14:56 415

原创 【无标题】

记住:IL评价堆栈,用于操作IL指令对应的语法树节点,并不是真正运行IL指令,而是用于构造基于IL指令对应的语法树结构,通过评价堆栈的方式,连接这些单独的IL指令对应的语法树节点,构建成树结构,然后存入到基础块中(最终构建成为HIR结构),方便后续变为LIR,汇编,机器指令。所以从抽象层面看,也可以理解为是在运行IL指令(毕竟后续的逻辑都是根据它生成的)...

2022-07-09 08:49:56 116

原创 Unity——URP填坑——主光源怎么来的?

看到URP中的选择主光源代码,对于每个相机而言,在影响这个相机的光照的所有光源中进行筛选出主光源,过程:首先主光源必须是平行光,然后如果在渲染的环境中设置过Sun的光源,那么就选这个光源为主光源(前提是影响这个相机渲染的,也就是经过Culling的),最后就以亮度最高的(intensity值最大的)为主光源。...

2022-06-17 12:02:00 1427

原创 操作系统填坑

自旋锁,互斥锁,条件变量,信号量后续再来排版先记录产生提示:这里可以添加本文要记录的大概内容:一条程序代码,比如a = a +1,多条CPU指令,多线程(多进程),操作系统中断机制,对同一个内存进行操作。提示:以下是本篇文章正文内容,下面案例可供参考一、实现基础修改与测试指令合并为一条指令:TestAndSet指令,返回修改之前的内存数值。即CPU指令原子性。二、自旋锁利用原子的CPU指令,Lock函数构建一个while循环,while(testandset (_lock,0)==

2022-05-21 21:42:21 187

原创 .Net填坑,C#中的async,await以及编译器给我们做了什么,后面细化再排版

要点:1.函数增加async之后,就会编译器就会帮我我们生成一个状态机代码static async void BBB() { Console.WriteLine("123"); }编译器帮助生成的[AsyncStateMachine(typeof (Program.\u003CBBB\u003Ed__5))] [DebuggerStepThrough] private static void BBB(

2022-01-21 14:39:09 1086

原创 状态帧同步之等待后面填坑

状态帧同步<font color=#999AAA 先放一张图留着,后面填坑

2021-12-31 15:45:29 297

原创 C#与CLR填坑之out,ref,in方法参数

C#与CLR填坑之out,ref,in方法参数文章目录C#与CLR填坑之out,ref,in方法参数普通传递方式按引用传递方式总结普通传递方式首先看微软官方文档的说明中的一句话:为不具有 in、ref 或 out 的方法声明的参数会按值传递给调用的方法。CLR方法默认都是按值传递,可能就会有疑问了,那下面这种也是按值传递? class Program { static void Main(string[] args)

2021-09-15 10:15:00 774 1

原创 ET6.0服务器框架学习笔记(三、一条内网actor消息)

ET6.0服务器框架学习笔记(三、一条内网actor消息)上篇文章对协议的写法,最简单的一条登录协议使用作为分析对象,本篇针对内网服务器之间的一条actor消息进行使用解析:R2G_GetLoginKey协议文章目录ET6.0服务器框架学习笔记(三、一条内网actor消息)一、内网普通Actor协议流程1、R2G_GetLoginKey协议的作用2、R2G_GetLoginKeyHandler的发送与处理二、普通Actor相关代码解析1.ActorMessageSenderComponent类2.In

2021-09-12 10:14:42 1645 9

原创 ET6.0服务器框架学习笔记(二、一条登录协议)

ET6.0服务器框架学习笔记(二、一条登录协议)上一篇主要记录ET6.0的服务器启动功能,本篇主要记录ET6.0完整的一条协议,从配置到生成协议数据,到从客户端发送给服务端,再发送回客户端的流程文章目录ET6.0服务器框架学习笔记(二、一条登录协议)一、登录协议流程1、协议配置2、协议数据生成3、发送协议4、处理协议5、接受返回协议二、普通协议处理相关代码解析1.外网NetKcpComponent组件2.TService类3.TChannel类总结一、登录协议流程1、协议配置ET6.0客户

2021-09-05 11:36:08 3240

原创 ET6.0服务器框架学习笔记(一、启动配置)

ET6.0服务器框架学习笔记最近ET6.0框架越发趋于完善,剩下的基本上都是小改动,ET6.0相比5.0新增了机器人框架,简易AI框架,协程锁(超时处理),更加精简的ETTASK等等。之前都是读源码的方式来解读5.0,6.0打算从使用的角度来解读(当然也会附带说下核心的代码)文章目录ET6.0服务器框架学习笔记从配置表开始一、pandas是什么?二、使用步骤1.引入库2.读入数据总结从配置表开始ET6.0服务器启动,需要依靠几个默认的配置表,如下图:每个表的作用:StartMachi

2021-09-01 16:17:38 8595 5

原创 ET服务器框架学习笔记-6.0杂记(异步协程锁)

ET服务器框架学习笔记-6.0杂记(异步协程锁)为了解决,使用异步编程时,某些情况下,需要异步按照我们编写的顺序执行。例如:查询同一个玩家的数据,场景:玩家登录->查询玩家身上金币->给玩家增加挂机金币,这时候由于是查询数据库操作,使用了异步,等待查询完毕,再执行计算金币。这个时候程序执行其他操作,比如登录扣除玩家金币,也是要查询玩家金币,又是查询数据库操作,又是异步。这个时候,没有协程锁会带来两个问题:1.都去数据库查玩家数据,带来性能浪费,只需要一个查询好已经通知到内存缓存了,另外一个可

2021-08-22 11:47:57 1377

原创 .net core底层入门学习笔记(十三-JIT后台阶段与机器码生成)

.net core底层入门学习笔记(十三)本篇主要记录,基于前面流程分析,变量版本标记等过程后的一些优化操作文章目录.net core底层入门学习笔记(十三)一、赋值传播二、公共子表达式消除三、断言传播四、边界消除检查二、使用步骤1.引入库2.读入数据总结一、赋值传播赋值传播阶段,会替换变量到其他拥有相同值(VN)的变量以减少赋值次数删除多余的本地变量。RyuJIT实现赋值传播的流程:1.为每个本地变量分配一个栈结构,根据支配顺序枚举基础块,遇到变量赋值往栈结构推入新版本;遇到本地变量使用,

2021-08-17 09:00:49 510

Agent2022.3.12f.unitypackage

Agent2022.3.12f.unitypackage

2023-12-06

Amplify Shader Editor1.9.1

Amplify Shader Editor1.9.1

2023-01-10

Easy Touch 5 Touchscreen Virtual Controls 5.1.0

Easy Touch 5 Touchscreen Virtual Controls 5.1.0

2022-10-25

Easy Save 3.4.0 Easy Save 3.4.0

Easy Save 3.4.0

2022-10-24

SUNTAIL Stylized Fantasy Village 1.1.unitypackage

SUNTAIL Stylized Fantasy Village 1.1.unitypackage

2022-10-10

Paint in 3D 1.11.5.rar

Paint in 3D 1.11.5.rar

2022-09-03

Digger PROV3.0.unitypackage Digger PROV3.0.unitypackage

Digger PROV3.0.unitypackage Digger PROV3.0.unitypackage

2022-09-03

All in 1 Sprite 3.43

All in 1 Sprite 3.43 Unity All in 1 Sprite 3.43All in 1 Sprite 3.43All in 1 Sprite 3.43

2022-08-18

UI动效UI动效UI动效

UI动效UI动效UI动效

2022-08-18

Unity挖洞,3D编辑器挖洞,运行时挖洞

Unity挖洞,3D编辑器挖洞,运行时挖洞

2022-08-07

裁剪刮卡_Unity资源插件

裁剪刮卡_Unity资源插件

2022-04-27

obi_full_package.rar

Obi Cloth 5.3 Obi Fluid 5.3 Obi Rope 5.3 Unity Obi Softbody 5.3

2021-10-12

Camera Filter Pack 4.0.0.rar

Camera Filter Pack 4.0.0.rar

2021-04-10

Camera Filter Pack 3.6.3.rar

Camera Filter Pack 3.6.3.rar

2021-04-10

Dialogue System for Unity v2.2.6(u2019.2.0).rar

Dialogue System for Unity v2.2.6(u2019.2.0).rar

2021-03-26

Urban Traffic System 2018.2.7z

Urban Traffic System 2018.2.7z

2021-03-02

Animancer Pro 5.3.1.rar

Animancer Pro 5.3.1.rar

2021-02-18

FingerGestures.zip

手势

2021-01-05

Final_IK_v1.9.rar

做IK的辅助工具

2021-01-05

Dialogue System for Unity 2.2.14(u2019.2.0)

Dialogue System for Unity 2.2.14(u2019.2.0)

2020-12-29

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除