自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(193)
  • 资源 (1)
  • 收藏
  • 关注

原创 在react-app-rewired工程项目中,调试AntVG6库源码包。

此时要手动添加你的react-app-rewired工程项目的根目录文件夹,以及G6源码的根文件夹。此时,我们已经成功debug到antvg6的源码的render函数。如果看到这样好几个圆点,意味着可以F11直接步入进去。关闭并且新打开一个浏览器,F12进去,先打个断点。打开浏览器访问之后,F12弹出控制台。

2025-11-14 11:05:42 377

原创 打开多个Unity编辑器时使用Visual Studio调试,弹出选择Unity实例窗口,但是没有实例

当打开多个Unity编辑器的时候,打开Visual Studio ,附加到Unity,进行调试,发现。这时候,就知道Debug的是哪个Unity实例了。调试-> 附加Unity 调试程序。在这里选择Unity实例。此时,多了一个调试选项。

2025-10-13 00:24:33 418

原创 Unity中,软遮罩SoftMaskForUGUI可移动遮罩形状实现方法

看看MaskingShapeSubtract节点,查看对应的组件列表,Masking Method 选择Subtract。其中,SoftMask节点拥有Image组件,这个Image组件是一个全透明的空图片,注意Color为全透明。然后看MaskingSHapeAdditive节点的组件列表,Masking Method选择Additive。SoftMask节点还带有Soft Mask组件以及Soft Maskable组件,如下图。GameObject节点结构如下图。

2025-09-04 23:14:05 344

原创 Unity中,软遮罩SoftMaskForUGUI的使用

Mask遮罩可以理解为,我用一张五角星遮罩图,上了颜色的部分就是没有遮罩的像素点,没有上颜色的那些区域就会不会渲染。遮罩图就是用来控制哪些像素点区域我希望渲染,哪些像素点区域我不希望渲染。其中,我的遮罩图mask.png是一个柔化边缘的五角星,可以用PS软件的软画笔随便绘制,其余地方透明。然后选择文件:该github项目根目录下的Package/src/package.json。下载好之后放到Unity工程的package目录下,为了好管理。在Unity中,通过添加本地包的方法将该项目导入到工程中。

2025-09-04 22:53:49 457

原创 麒麟linux解决vnc远程桌面灰屏问题

只有mate.desktop xinit-compat.desktop桌面环境,应该如何修改xstartup文件?修改~/.vnc/xstartup。杀掉vncserver并重新运行。检查存在哪些类型的桌面会话。

2025-08-21 14:09:40 280

原创 unity 单独设置材质属性块

【代码】unity 单独设置材质属性块。

2025-03-14 21:12:39 202

原创 用Python制作Alpha贴图透明遮罩

【代码】用Python制作Alpha贴图透明遮罩。

2025-03-12 04:17:40 164

原创 Unity中VFX烟雾特效与场景中的碎片物体重叠时闪烁问题

那么最终的效果就是显卡先渲染碎片物体然后再渲染烟雾,所以看起来烟雾一直在碎片物体之上,从而就不会闪烁了,因为碎片物体是恰好透明的那个渲染队列,渲染队列是3000,要小于烟雾的3050。如果渲染队列都是3000,那么显卡的渲染先后顺序随机,就会出现闪烁了。点击Unity项目中vfx特效文件,看右侧的Inspector窗口。

2025-03-01 00:42:54 278

原创 Unity中Rayfire Rigid组件的Activation参数含义

其中绿色的连线是Yielding状态,红色是Unyielding状态,意思是说红色网络连线部分的碎片的粘合力很大,不容易分开的意思,绿色网络连线部分的碎片是容易分开的。Velocity:表示碎片被物体撞击以后,速度达到多少的时候会被激活物理系统,如果设置为0,表示无论速度是多少,都不会被激活,如果设置为0.5,那么速度达到0.5以上才会被激活。Offset:表示碎片偏移多少距离的时候激活物理系统,如果设置为0,表示无穷大,意思就是无论多少距离都不激活,比如设置一个0.2,那么移动0.2米会被激活。

2025-01-10 14:48:20 73

原创 Unity中,Rayfire Rigid组件的Mesh Demolition 中Fragments参数含义

Depth Fade:表示,当产生二级碎片甚至多级的时候,下一级碎片的数量是上一级碎片数量乘以Depth Fade的值,比如第2级碎片是8个碎片,第三级碎片,就是从这8个碎片中继续破碎,因为设置Amount为10,所以10*0.5=5,所以第三级碎片是从这8个碎片中每个碎片分裂5个左右。这个值越大,产生的碎片越多,越消性能。Contact Bias:表示板砖被小球撞击的时候,碎片集中到撞击点的程度,如果是0,那么就破碎的很平均,如果设置为较大的值,比如0.95,那么会有更多的碎片集中到小球的碰撞点。

2025-01-10 04:17:55 63

原创 Unity中Rayfire的Limitations参数含义

Slice By Blade勾选上的时候,当有一个平面物体拥有Rayfire Blade组件的时候,被这个平面所切过,会裂开。效果如图:板砖会裂开。如果设置为3,那么,二级碎片的大小大部分都是小于3的,那么这部分小于3的碎片就不会再次被分解了,所以看起来碎片会更少。Depth表示能破碎多少次,0表示可破碎无穷多次,表示父物体破碎产生的碎片可以继续破碎。Size表示,当Depth大于等于2的时候,二级碎片的最小的大小是多少。Time表示小球以一定的频率去反复碰撞板砖的时候,多少秒以后会破碎。

2025-01-10 03:25:33 153

原创 Unity中Rayfire Connectivity组件的坑,无缘无故自动激活碎片,或者无法激活碎片。

当然我们要把这个区域内的碎片网格设置为Unyielding=true。这些碎片设置为Unyielding=true的时候,也就是要在Rayfire Rigid组件->Activation -> Connectivity -> Unyielding勾选上,绿色部分是不勾选的。最坑的是Offset 一定要大于0,如果设置为0,碎片不会被激活,如果设置为0,并且Rayfire Connectivity组件的Initiate设置为At Start, 那么就会奇怪地自动激活碎片,哪怕没有任何物体撞击它。

2025-01-09 18:26:29 215

原创 Unity中Rayfire Rigid组件坑,Damage参数设置不起任何作用

这个是最坑的设置,默认就是0.1,这个硬度太小了,导致Damage参数无论怎么设置,板砖都被小球一击必杀。硬度必须设置大一些,比如1.0。这里有两个小球,撞击一个板砖,板砖最大损坏值为50,损坏程度大于50就会被撞碎。但是没到达20,所以不会触发物理系统,板砖不会受到重力的影响。最后一个框设置为None,意味着小球永远不会被撞碎,硬度无穷大。此时板砖扣了28滴血了,会触发物理系统,由于重力导致往下落。最终摔的一瞬间,50滴血都扣完了,所以碎了。

2025-01-09 02:02:41 177

原创 Unity的Rayfire Rigid组件坑Activation By Velocity等参数不生效问题

其中 cubeTopThinRoot就是粉色柱体本身,不仅本身,包括它的碎片的对应的velocity都要设置为5f;最大的坑在于:最后一个绿色框Demolition必须设置为None,否则Velocity参数怎么设置都没什么效果。设置velocity为0f的时候,每个碎片只需要被撞击时产生大于0的速度,就会触发物理系统,所以受到重力掉下来了。如果设置为velocity为5f,那么碎片被撞击时产生大于5的速度才会触发物理系统,那么只有少量的碎片下落。这是velocity设置为5f的效果。

2025-01-09 01:46:54 238

原创 在typescript浏览器端中调用C++编写的函数,WebAssembly传递指针类型的参数,以及处理指针类型的返回值。

最后是返回一个C++结构体指针,在TypeScript中通过DataView来获取内存中的地址偏移量来取得结构体中的数据,因为em++编译器是以32位来编译.cpp文件的,所以指针占4个字节。DataResult结构体第一个属性dArr是一个指针,那么就是地址偏移量0,然后以32位无符号整型取得dArr指针,通过这个指针去读取wasm中memoryBuffer中的数据,就可以得到dArr属性对应的值了。同理,通过地址偏移量+4来得到propCount属性,以32位整数读取数据即可。

2024-09-17 00:14:16 874

原创 typescript如何调用自己编写的C++函数

在https://blog.youkuaiyun.com/Xeon_CC/article/details/139957190这篇文章已经直到,js文件以及对应的wasm文件如何生成了。我们把生成好的文件放入到typescript项目的src/lib/wasm目录下。那么typescript怎样才能调用C++编写的函数呢?然后尝试调用useModule函数即可。这是定义的C++函数。

2024-08-30 13:36:29 949

原创 第8讲:制作树枝开花朵的动画

树枝开花小游戏

2024-07-25 15:07:53 230

原创 第7讲:以Point、ObservablePoint为例,添加部分功能。

其中,ObservablePoint是使用很频繁的类,Point的位置一旦发生改变,触发回调changePointCallback。ObservablePoint也是IPoint的实现,所以新增的方法与Point一样。其中,Point.prototype.add = function(other: IPoint){setInterval是常用的定时器,每隔500毫秒执行一次函数,执行超过一定次数,结束定时器。在src/lib中,创建PointUtils.ts。就是往Point类中自己添加了add方法。

2024-07-15 17:08:05 302

原创 第6讲:增修别人的函数库,以pixi.js库中的Rectangle模块为例。

修改index.html文件,修改引用为AddChangeFunction.ts文件。在src目录下新建一个AddChangFunction.ts。在src/lib目录下新建一个RecUtils.ts文件。

2024-07-14 17:31:04 271

原创 第5讲:建立自己的C函数库,js调用自己写的C/C++函数,并包含依赖C/C++第三方静态库。

在javascript中,Array有很多内置的功能,比如Array.map,Array.filter,Array.find等等,能用内置的功能就用内置的功能,最好不要自己实现一套,因为底层调用的可能压根就不是js语言本身,底层的实现可能由C/C++实现的。如果我们要做的一些功能,需要高性能密集计算,但是JavaScript内置函数无法满足我们要求的时候,这时候我们就要自己用C/C++编写一个程序,然后封装成.a静态库给JavaScript调用了。我这里导出了所有的函数,函数前面要加上下划线。

2024-06-26 01:28:07 1017 1

原创 第4讲:pixi.js绘制舞台、随窗口大小而改变画布大小和舞台位置

然后在index.html中,编辑代码,改成如下代码,现在我们引用CanvasAndStage.ts文件,而不要引用main.ts文件。基于前面写的代码,在gamelets的工程目录下新建一个CanvasAndStage.ts。随着浏览器缩放,黑色的画布会跟着缩放,容纳整个浏览器窗口。

2024-06-25 13:40:02 1192

原创 第3讲:关于Pixi的Text、Container、Sprite、Graphics组件功能作用

Container是一个容器,如果多个组件放在一个容器中,如果容器的属性发生改变则,容器里面的子控件的属性都会发生改变。Graphics组件是用来绘制图形用的,比如线条,圆形,矩形等等。下部分各种组件基于这个公用代码直接往下添加代码即可。Sprite组件非常简单,就是显示一张图片。Text组件,非常简单,就是绘制文字。

2024-06-18 00:21:28 562

原创 第2讲:pixi.js 绘制HelloWorld

基于第0讲和第1讲,我们增添了vite.config.ts文件。并配置了其他的http端口。然后在package.json中点击Debug,启动了localhost:7777。删除 conter.ts、typescript.svg。此时,我们删除掉没用的东西。

2024-06-17 21:10:32 492 2

原创 第1讲:创建vite工程,使用框架为Vanilla时,语言是typescript,修改http端口的方法

直接在项目根目录创建 vite.config.ts文件。

2024-06-16 16:58:50 461

原创 第0讲:创建一个Vite工程

接下来选择框架为: Vanilla (表示不使用框架,原生JS)然后输入项目名,这里起名为gamelets(很多小游戏的意思)选择语言为:TypeScript。

2024-06-16 13:47:32 314

原创 JS调用C语言写的代码,cmake项目生成的wasm文件

那么这时候呢,libutil.wasm 也会被重新覆盖生成,并且会得到一个libutil.js。这个命令一定要执行,才可以生成正确的libutil.asm,我们这里不使用libutil.js,仅使用libutil.wasm即可。如果找不到emcc命令,请搜索emcc.bat文件在哪里,并配置Emscripten里面的emcc.bat文件所在目录的环境变量。如下图,这个libutil.wasm文件确实变了,这是一个有效的wasm文件。这意味着我会用node main.js命令来执行这个main.js代码。

2024-04-20 16:20:59 939

原创 在debian中vcpkg install gdal报错:error: building libpq:x64-linux failed with: BUILD_FAILED

最主要原因是autoconf包没有被安装到系统中。其他依赖顺便安装一下。

2024-01-23 12:00:01 1065

原创 C++线程池实现例子

【代码】C++线程池实现例子。

2024-01-18 16:40:12 720

原创 Elasticsearch8 创建新用户PUT请求方式

【代码】Elasticsearch8 创建新用户PUT请求方式。

2024-01-16 14:04:50 997

原创 用虚函数的虚表调用成员函数

直接操作虚函数表是一种高度依赖于特定编译器实现的行为,它不是标准C++的一部分,因此可能在不同的编译器或平台上表现不一致,也可能引入安全和稳定性风险。在实际的应用开发中应该避免这种做法。不推荐在生产环境中写这种代码装B,行为危险,装B后果自负。

2023-11-27 18:02:51 575

原创 CentOS7搭建smb服务器

然后会提示你输入密码,输入密码:yourpassword。

2023-11-25 18:42:22 1073

原创 CentOS7开机自动启动自定义脚本

Type可以为forking或者simple。

2023-11-25 16:57:26 840

原创 搭建SRS视频服务器

如果ffmpeg的路径不在/usr/local/bin/ffmpeg , 就要映射路径。在我这里,我已经把http_server 的端口改成了6930, 而不是默认的8080。注意,必须是1985端口。有时候可能默认显示别的端口。进入到srs/trunk 目录下,并执行编译命令。连接SRS就可以看到主机信息和摄像头实时动态。进入到浏览器即可访问。

2023-11-24 21:47:04 1258

原创 CentOS7 手动添加yum清华大学源

【代码】CentOS7 手动添加yum清华大学源。

2023-11-24 19:12:36 1267

原创 在工业生产环境下,服务器没有互联网,如何通过自己的电脑上互联网?

CentOS

2023-11-24 19:10:05 557

原创 在linux环境下cmake中配置Qt6报错:but it set Qt6_FOUND to FALSE so package “Qt6“ is considered to be NOT FOUN

sudo apt-get install build-essential libgl1-mesa-dev

2023-10-11 10:29:50 2431 9

原创 安装QT的时候,更换镜像源

在启动Qt的网络安装器的exe程序的时候,加上一些配置选项即可。

2023-08-15 15:05:31 1579

原创 ARM架构银河麒麟docker,源码编译安装GDAL

进入到GDAL源码目录并执行。下载GDAL3.4.3版本。以6个cpu核心编译源码。docker中安装依赖。去官网下载GDAL源码。

2023-08-09 14:02:07 1773

原创 给银河麒麟v10添加yum源

如果没有yum.repos.d文件夹,手动创建一个。最后,就可以yum install xxx 了。

2023-08-07 11:24:53 7775 1

原创 虚幻引擎5关闭实时编译器

进入菜单编辑->编辑器偏好设置->通用->实时代码编写->常规->启用实施代码编写->把钩子去掉。

2023-08-05 10:53:06 1325

空空如也

空空如也

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

TA关注的人

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