- 博客(542)
- 资源 (1)
- 收藏
- 关注
原创 【Unity3D】摄像机适配场景以及Canvas适配
理由:小于代表真机高度比开发高度更大,因此不需要担心高度上的遮挡,而应担心宽度的遮挡,为了避免宽度上有遮挡问题,因此保证宽度不变策略;右图是真机分辨率下适配后的情况,保证宽度不变(可见宽度上的绿色边缘处是紧贴着屏幕边缘),将整个3D场景所有元素放于一个根节点下,往下移动一定距离来紧贴白色UI。左图是开发分辨率下的情况(宽度和高度均正常 设计上就是如此)开发分辨率 750*1334 (宽高比:0.56)(下面的一行白色是UGUI UGUI紧贴着屏幕底下边缘)真机宽高比<开发宽高比,采用宽度不变策略。
2025-03-22 18:20:50
508
原创 【Unity3D】Addressables使用流程
如果你的shader是Standary 标准着色器,这个着色器变体非常多,会导致包体变大,可以去获取shader源码 Standary.shader 简化Standary只保留需要使用的,具体可以百度应该有。Remote.LocalPath 改为 http://ip:port/[BuildTarget] 例如:http:localhost:6800/[BuildTarget] (不过我的默认就是对的)默认是:http://[PrivateIpAddress]:[HostingServicePort]
2025-03-16 20:58:12
847
原创 Windows搭建SVN本地服务器 + TortoiseSVN客户端
安装过程到选路径会有3个路径可选Location 安装目录、Repositories SVN库目录、 Server Port 端口 改为8443、Backups 备份文件目录 最好都放到一个目录下例如:D:\Tools,然后分别建3个文件夹作为以上3个目录。找到VisualSVN Server Manager运行创建一个SVN库直到下面这个图,会开放全部用户可读写库。如果不想开放全部,只允许部分用户使用的话,比如只有某些成员能使用客户端库,其他成员无法访问服务器库,那么就要选用。
2025-02-13 17:08:44
1709
原创 【Unity3D】Jenkins Pipeline流水线自动构建Apk
解决groovy.lang.MissingPropertyException: No such property: Platform for class: Cannot invoke "java.util.Map.size()" because "map" is null使用Pipeline Script 脚本式Groovy语法流水线式自动构建安卓apk包Tomcat 10.0.5 + Jenkins 2.492.1(.war) + JDK 17 启动Jenkins Unity保持使用JDK 1.8
2025-02-12 23:32:46
988
5
原创 【Unity3D】Unable to detect SDK in the selected directory
打开Android Studio的SDK Manager更新Android SDK Tools。某天突然发现SDK选中自己的目录 或 打安卓包时 提示SDK Tools相关的报错。
2025-02-12 11:05:15
327
原创 An existing Android SDK was detected. The setup wizard will only download missing or outdated SDK...
查询dl.google.com 国内的IP,并且使用cmd ping 通这个IP,然后就可以将这个IP设置到hosts文件里(hosts文件位于:C:\Windows\System32\drivers\etc下,其他系统百度看下)而我的原因就是因为旧的IP已经失效了,要更新到新的IP,如果有类似的问题很有可能还是代理相关的问题。一觉醒来,Android Studio的Android SDK无法正常显示,只会显示出已安装的内容,未安装的都不见了。
2025-02-12 10:41:16
485
原创 【Unity3D】UGUI的anchoredPosition锚点坐标
本文直接以实战去理解这三个坐标,围绕着将一个UI移动到另一个UI位置的需求进行说明。(anchoredPosition)UI锚点坐标,它是UI物体的中心点坐标,以UI物体锚点为中心的坐标系得来,UI锚点坐标受锚点(Anchors Min、Max)和 中心点Pivot影响。
2025-02-10 20:00:31
1081
原创 【Unity3D】实现横版2D游戏——攀爬绳索(简易版)
基于实现了单向平台后才能进行攀爬绳索到平台,否则攀爬到平台后会被阻挡,以及无法从平台往下攀爬。
2025-01-30 17:33:07
1120
原创 【Unity3D】实现横版2D游戏——单向平台(简易版)
项目Demo直接使用免费资源:Hero Knight - Pixel Art (Asset Store搜索)打开Demo场景,进行如下修改,注意Tag是自定义标签SingleDirCollider对HeroKnight增加如下脚本:核心思路:利用Physics2D.IgnoreCollision(碰撞器1,碰撞器2,[true])忽略或恢复传入的2个碰撞器之间的碰撞。
2025-01-30 00:26:11
737
原创 【Unity3D】实现横版2D游戏角色二段跳、蹬墙跳、扶墙下滑
蹬墙跳要调整好Jump On Wall H Force 横向力 和 Jump On Wall V Force 纵向力 数值才能表现正常,其中 V Force 是在 1的基础上的增量值,这里的力并非物理力实际是速度增量倍率。代码则是:Mathf.Sqrt(2f * jumpHeight * -gravity),加速度是重力反方向,跳跃高度固定,则计算出了速度增量,之后用它乘以(1+V Force)得出的一个对Y轴速度影响的增量。跳跃对Y轴速度影响是用公式:根号2gh。可做辅助射线查看是否正常射线检测到墙体。
2025-01-29 11:43:25
539
原创 【Unity3D】实现2D角色/怪物死亡消散粒子效果
关于Billboard和Stretched Billboard区别是前者仅永远朝向摄像机,后者还会根据粒子速度越快拉伸粒子,越慢压缩粒子,呈现动态运动粒子效果,具体可以自行调整一些相关参数测试。Particle System3物体(拷贝物体2修改,与物体2区别噪声不带曲线变化固定为1,且改为非爆发式,而是随着时间逐步发射10000个粒子至结束)Particle System2物体(拷贝物体1修改,与1物体区别在于速度带噪声影响且速度前期平缓变化、后期变化幅度大)
2025-01-28 22:49:55
753
原创 【Unity3D】实现Decal贴花效果,模拟战旗游戏地形效果
涉及知识点:Decal贴花、屏幕后处理Bloom、屏幕空间构建世界空间、ChracterController物体移动、Terrain地形创建。
2025-01-27 18:15:04
715
原创 【Unity3D】Tilemap俯视角像素游戏案例
自上而下分别是:tile_0025、tile_0012、tile_0014、tile_0036、tile_0038、tile_0026、tile_0024、tile_0037、tile_0013、tile_0039、tile_0040、tile_0041、tile_0042。之后在Scene场景绘制地形即可,如下操作,先打开素材库Tile Palette,再选中画笔后,选择素材库的其中一个素材,例如泥土地形,然后直接去到Scene窗口左键白色描边格子绘制。会生成这些Tile文件。
2025-01-27 00:48:29
1141
原创 【Unity3D】《跳舞的线》游戏的方块单方向拉伸实现案例
运行游戏点击空格动态创建拉伸的方块,由Speed控制速度,新方向是随机上下左右生成。通过网盘分享的文件:CubeMoveMusic.unitypackage。
2025-01-24 23:33:12
449
原创 【Unity3D】aab包太大无法上传Google问题
勾选Split Application Binary:资源会被拆分成多个部分,超过150MB的部分使用Play Asset Delivery进行分发,可以根据设备类型自动分发不同架构的资源,减少用户设备的存储需求。不勾选Split Application Binary:所有资源包含在一个单一的aab包中,不需要额外的下载步骤,但可能会增加aab包的大小。
2025-01-24 17:47:16
926
原创 【Unity3D】3D物体摆放、场景优化案例Demo
通过网盘分享的文件:PlaceGameDemo2.unitypackage链接:提取码: fpfm1、负责加载建筑数据表(BUILD_CONFIG_JSON_STR)json内容id:1,Build_A(立方体)、id:2,Build_B(球体)2、构建世界World类对象(1000*1000*1000大小)以100*100*100的立方体为房间Room填充World空间。World由若干个Room组成,Room下可存放若干个处于Room范围内的物体(Unit封装)
2025-01-20 18:42:18
1387
原创 【Unity3D】利用Hinge Joint 2D组件制作绳索效果
其子节点的情况和动态绳索一样,挂载2D刚体、HingeJoint2D以及2D碰撞体,区别在于没有Anchor空物体作为节点头部,而是直接以whitecircle作为第一个节点,它连接的2D刚体是StaticRope的2D刚体。1、关于绳索节点图片,使用的是50*50的白色圆形图片,不要有多余的透明区域,否则会影响绳索表现,例如图片留白很多,绳索节点的形变会很抽象,还有使用长方形图片也有点抽象,尽量选择相同宽高的图片作为节点。2、所有DynamicRope下的物体都有HingeJoint2D组件,
2025-01-17 22:54:25
829
原创 【Unity3D】远处的物体会闪烁问题(深度冲突) Reversed-Z
因为深度值是浮点类型float32,其浮点数记录无法保证精确度的,它仅有23个二进制有效位保存数据,8位是指数位,1位是符号位,其中23位只是小数有效位,若只谈纯整数它有24位有效位,2^24代表16777216个整数,例如:1.1111111....111 小数点后面是23个1,指数是2^23,那么就会得到 11111111...1111 (24个1)的二进制数,这个最前面的1是默认存在的(IEEE754规范)例如,左图Y轴[80,100]范围,其红色点密集,代表深度大的物体能准确表达深度;
2025-01-17 01:48:18
772
原创 【C盘清理】C盘清理工具、Unity缓存文件转移
设定后需要重启电脑生效,重启后重新打开Unity项目会自动生成到新的目录下,然后把旧的目录删除,或许也可以直接剪切原目录的内容到新目录下,但有访问中的问题 还是直接重启算了。将C:\Users\用户名\AppData\Local\Unity\cache下的2个文件目录packages和npm转移到如下2个系统变量指定的文件目录。FolderMove 将文件目录转移到另一个地址,转移后会保留快捷访问文件在原地址,实际内容已经转移到其他地方。(最好是转移,彻底删除可能出问题)Unity相关缓存转移出C盘。
2025-01-12 20:18:23
443
原创 【Unity3D】利用IJob、Burst优化处理切割物体
麻烦的地方是所有List都要改成NativeArray,所有Dictionary都要改成NativeHashMap,以及不能传递GameObject,Transform等,也就是不能有任何的引用类型对象出现在继承了IJob接口的脚本,而且CutJob是一个struct结构体。使用Job、Burst会将切割数据处理放到一个非主线程处理,并行加速计算。
2025-01-11 22:24:17
341
原创 【Shader案例】大地图迷雾实现思路
场景布局:地板Scale(40,1,40) 云层Cloud平面Scale(40,1,40) 保持一样大小,将云层平面X和Z值保持与地板一样,Y值拉大,让云层平面正位于地板上空。新建1个层级:Cloud,云层物体Layer层级设置为Cloud,射线检测只检测这一层的。其他代码部分相当简单了,就是射线检测拿到uv转局部坐标(x,y)去设置动态生成的遮罩纹理Texture2D(x,y)的像素R通道为0,就达到了裁剪这一个格子效果。
2025-01-10 19:49:51
595
原创 【Unity3D】导出Android项目以及Java混淆
只有上面的这种成功信息,不要只看CONFIGURE SUCCESSFUl,而是其他相关的警告也没有才正常,正常后就能看到Build Apk,否则是无法看到的。利用镜像地址加速下载gradle-6.7.1-all gradle压缩包,下载到C:\Users\用户名\.gradle\wrapper\dists下。可通过观察这些文件后缀版本名看自己的对应多少版本或网上查询,这些版本不对应上就会出很多编译问题,即使你是空工程!gradle plugin 4.2.0版本对应gradle 6.7.1版本。
2025-01-08 18:25:22
1153
原创 Minimum supported Gradle version is 6.7.1. Current version is 5.4.1.
Minimum supported Gradle version is 6.7.1. Current version is 5.4.1. 意思是让我们去将gradle-5.4.1-all.zip改为gradle-6.7.1-all.zip,修改如下,并使用镜像地址加速下载。如果镜像地址不行了,可以自行百度找找有没其他的。
2025-01-08 14:59:09
400
原创 【Unity3D】apk加密(global-metadata.dat加密)
进入test文件夹,将\test\assets\bin\Data\Managed\Metadata\global-metadata.dat挪到项目里加密,然后再覆盖test文件夹内的,接着进行重打包apk得到ex_test.apk。上面这个操作,当i%5=4时,取到a[4]是'\0',data[i] ^ '\0' = data[i] 不会发生变化的,因此C#侧加密代码需要如下写法,当i%5=4时,我直接continue跳过,不对bytes[i]做处理。文件对齐后还需要使用apksigner,进行签名。
2025-01-08 03:20:59
1353
原创 【Unity3D】AB包加密(AssetBundle加密)
API从磁盘加载AB包,其中crc填0,代表没有任何CRC校验,offset填加密所使用的偏移量8(你可以改,但一定和加密时偏移量一样。测试代码如下,加载名为"prefab_ab"的AB包,并加载名为"Cube"的资源,是一个预制体。加密后,直接无法加载ab,所以无法正常看到ab内容。
2025-01-07 21:37:04
653
原创 LuaException: [string “chunk“]:1: attempt to call a nil value (global ‘require‘)
attempt to call a nil value (global 'require')原因:luaTable没有正确赋值元表metatable,或元表__index参数没有正确赋值luaEnv.Global。
2025-01-07 19:14:50
310
原创 【xLua】xLua-master签名、加密Lua文件
userLoader就是进入到我们在实例化SignatureLoader时传入的第二个参数(一个委托对象),委托执行了加载原文件字节数组、解密操作,而load_and_verify函数是先进行的userLoader,拿到解密后的byte[]再进行签名解码,所以只能先签名文件、后加密文件,对应先解密文件,后解码签名。是我自定义的提供外部解码byte[]的,需自行加载文件原始byte[],以及传入lua文件相对路径(不带.lua后缀)实际也可以写个不用传路径的方法,因为只是用来警告提示的。
2025-01-07 19:09:02
789
原创 【Unity3D】Text文本文字掉落效果
UGUI Text直接挂Canvas(World Space) 将它挪到镜头前,然后我是调整它的透明度为0的(不会影响网格生成),并挂载Gravity3DText组件,Gravity3DText组件参数拖拽自身Canvas和一个TextMesh物体预制体(3D文本),相关技术:Text、TextMesh、Rigidbody(刚体)、BoxCollider(碰撞体)、TextGenerator、文本网格、文字网格。运行游戏后点击空格生成3D文本。
2025-01-06 01:49:37
359
原创 【Unity3D】UGUI获取图片网格、文本网格大小、位置(Rect)
注意这个API最后得到的Rect,并不是rectTransform.rect,它的(x,y)是网格中心点(Canvas空间),它的(z,w)是网格宽度和高度。Rect(rectTransform.localPosition.x, rectTransform.localPosition.y, rectTransform.rect.width, rectTransform.height)构成。
2025-01-04 23:52:43
332
原创 [Q&A] System.Drawing.dll duplicate references or ‘System.Drawing.Color‘ in assembly causes a cycle
1、Multiple assemblies with equivalent identity have been imported: 2.0.0\shims\netfx\System.Drawing.dll'. Remove one of the duplicate references.2、'System.Drawing.Color' in assembly 'netstandard' causes a cycle
2025-01-03 23:44:45
434
原创 【Unity3D】UGUI Canvas画布渲染流程
Canvas组件:画布组件是进行 UI 布局和渲染的抽象空间。所有 UI 元素都必须是附加了画布组件的游戏对象的子对象。优化UI合批:Image图片合批;文本和图片相交、排序对合批的影响;Mask对合批的影响;Canvas对合批的影响。
2025-01-03 18:31:29
900
原创 【Unity3D】遮挡剔除 Occlusion
版本:Unity 2021.2.7f1c1位于射线前创建若干个立方体,将最前面的立方体放大遮挡住后面的立方体。打开Occlusion面板可单独选中遮挡物:勾选Occluder Static,将其变为遮挡静态物体其他被遮挡物体则勾选Occludee Static然后点击Bake,之后选中Main Camera 并点击进入Visualization勾选Occlusion culling开启遮挡剔除,就生效了。遮挡剔除包含2个部分的剔除,1、剔除视椎体之外的物体。
2025-01-03 13:40:15
1250
原创 【Unity3D】LOD Group 多细节层次(CrossFade淡出淡入效果)
unity_LODFade.x是传入的渐变透明度,当是负数时说明是淡入物体的透明度值,需要+1操作,负数时是从-1变化到0,+1后就是从0变化到1。经过如下修改后支持Cross Fade 淡出淡入效果(注意3个物体的材质是不一样的,Shader一样)LOD_FADE_CROSSFADE变体是由LOG Group选择Cross Fade模式自动设置的。可发现我勾选了Cross Fade并没有渐隐效果,是因为Shader是不透明的,不支持。当是正数时,说明是淡出物体的透明度值,直接拿来使用。
2025-01-03 00:40:37
357
原创 【Unity3D】3D渲染流水线总结
场景数据从硬盘HDD加载到内存RAM,网格和纹理等数据会再次加载到显存VRAM,显卡对显存访问速度更快。1、顶点着色器:能够对网格的单个订单进行操作,必须实现将顶点坐标从模型空间转换到齐次裁剪空间。三角形设置:使用几何阶段输出的三角形顶点屏幕坐标进行插值运算得出三角边界坐标点。②通过测试的片元颜色值和颜色缓冲区的颜色进行合并(混合),再放回颜色缓冲区。通过片元的纹理坐标对纹理进行采样得到颜色值,可以对这个颜色值进行修改输出。①模板测试、深度测试,决定每个片元是否可见,通过测试才可见。
2025-01-02 22:54:17
360
转载 【学习总结】垃圾回收GC算法
改进:延迟引用计数法,使用零数表存储从根引用的对象的被引用数,被引用数为0时不会立即回收,而是等到零数表满 或 空闲链表为空时,再扫描零数表回收计数为0的对象。清除阶段:遍历堆,从堆的首地址开始 按顺序一个个遍历对象,检查其是否标记,若未被标记则回收对象,将对象作为分块连接到“空闲链表”的单向链表。合并:当不断进行分配时,会不可避免地产生大量小分块(利用率低的分块),合并就是把连续的小分块合在一起变成大分块,合并在清除阶段进行。对象计数是原本指向它的指针值发生改变时,就会作出改变,可理解是实时处理的标记。
2025-01-02 13:29:01
97
原创 【Unity3D】基于UGUI——简易版 UI框架
若打开的面板不允许同时显示多个,检测到已有同名面板处于Active状态(通过检查面板所属窗体对象的活跃面板栈>0)则对显示中的同名面板进行【特殊关闭】,并缓存面板状态数据放入窗体对象的【面板状态数据栈】,以备恢复面板使用。关闭当前面板后,检查面板窗体对象的不活跃面板队列>0,且【面板状态数据栈】>0时,则需恢复同名面板的【特殊显示】。关闭当前面板前,若关闭的面板是全屏UI,且【全屏UI活跃数】== 1 时,则进行恢复显示出全部被隐藏的活跃面板。若打开的面板是全屏UI,则打开后对所有活跃的面板Hide。
2025-01-02 02:37:11
473
原创 【Unity3d】C#浮点数丢失精度问题
(-1^0 * 6) * 10^-1 = 1 * 6 * 0.1 = 0.6 (实际上程序并不会跑我这写的这段代码,因为所有运算+-*/都会用decimal的形式计算,而不是我们理解的运算方法了,如果想把decimal转成小数显示出来,那大概会只是在字符串形式上进行拿到整型后 对小数点字符进行左移而已,猜测是如此)decimal的存储计算情况还没了解,而float的情况和double一样,其小数部分是23位存储,但实际有效范围是2^24,double是2^53,因为。猜测是计算机会偏向较大值进位。
2024-12-31 12:15:55
1329
Unity/C#的Excel转二进制和XML工具
2019-01-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人