
个人见解
文章平均质量分 63
两水先木示
有时候,你不知不觉就完成了一个BUG!
展开
-
【Unity3D】摄像机适配场景以及Canvas适配
理由:小于代表真机高度比开发高度更大,因此不需要担心高度上的遮挡,而应担心宽度的遮挡,为了避免宽度上有遮挡问题,因此保证宽度不变策略;右图是真机分辨率下适配后的情况,保证宽度不变(可见宽度上的绿色边缘处是紧贴着屏幕边缘),将整个3D场景所有元素放于一个根节点下,往下移动一定距离来紧贴白色UI。左图是开发分辨率下的情况(宽度和高度均正常 设计上就是如此)开发分辨率 750*1334 (宽高比:0.56)(下面的一行白色是UGUI UGUI紧贴着屏幕底下边缘)真机宽高比<开发宽高比,采用宽度不变策略。原创 2025-03-22 18:20:50 · 526 阅读 · 0 评论 -
【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 · 875 阅读 · 0 评论 -
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 · 1834 阅读 · 0 评论 -
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 · 514 阅读 · 0 评论 -
【Unity3D】UGUI的anchoredPosition锚点坐标
本文直接以实战去理解这三个坐标,围绕着将一个UI移动到另一个UI位置的需求进行说明。(anchoredPosition)UI锚点坐标,它是UI物体的中心点坐标,以UI物体锚点为中心的坐标系得来,UI锚点坐标受锚点(Anchors Min、Max)和 中心点Pivot影响。原创 2025-02-10 20:00:31 · 1100 阅读 · 0 评论 -
【Unity3D】实现2D角色/怪物死亡消散粒子效果
关于Billboard和Stretched Billboard区别是前者仅永远朝向摄像机,后者还会根据粒子速度越快拉伸粒子,越慢压缩粒子,呈现动态运动粒子效果,具体可以自行调整一些相关参数测试。Particle System3物体(拷贝物体2修改,与物体2区别噪声不带曲线变化固定为1,且改为非爆发式,而是随着时间逐步发射10000个粒子至结束)Particle System2物体(拷贝物体1修改,与1物体区别在于速度带噪声影响且速度前期平缓变化、后期变化幅度大)原创 2025-01-28 22:49:55 · 762 阅读 · 0 评论 -
【Unity3D】Unity混淆工具Obfuscator使用
混淆后屏蔽TestA.dll混淆默认日志文件。原创 2025-01-23 21:40:29 · 1919 阅读 · 0 评论 -
【Unity3D】利用Hinge Joint 2D组件制作绳索效果
其子节点的情况和动态绳索一样,挂载2D刚体、HingeJoint2D以及2D碰撞体,区别在于没有Anchor空物体作为节点头部,而是直接以whitecircle作为第一个节点,它连接的2D刚体是StaticRope的2D刚体。1、关于绳索节点图片,使用的是50*50的白色圆形图片,不要有多余的透明区域,否则会影响绳索表现,例如图片留白很多,绳索节点的形变会很抽象,还有使用长方形图片也有点抽象,尽量选择相同宽高的图片作为节点。2、所有DynamicRope下的物体都有HingeJoint2D组件,原创 2025-01-17 22:54:25 · 846 阅读 · 0 评论 -
【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 · 1157 阅读 · 0 评论 -
【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 · 1380 阅读 · 0 评论 -
【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 · 335 阅读 · 0 评论 -
[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 · 438 阅读 · 0 评论 -
【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 · 1270 阅读 · 0 评论 -
【学习总结】垃圾回收GC算法
改进:延迟引用计数法,使用零数表存储从根引用的对象的被引用数,被引用数为0时不会立即回收,而是等到零数表满 或 空闲链表为空时,再扫描零数表回收计数为0的对象。清除阶段:遍历堆,从堆的首地址开始 按顺序一个个遍历对象,检查其是否标记,若未被标记则回收对象,将对象作为分块连接到“空闲链表”的单向链表。合并:当不断进行分配时,会不可避免地产生大量小分块(利用率低的分块),合并就是把连续的小分块合在一起变成大分块,合并在清除阶段进行。对象计数是原本指向它的指针值发生改变时,就会作出改变,可理解是实时处理的标记。转载 2025-01-02 13:29:01 · 106 阅读 · 0 评论 -
【Unity3D】基于UGUI——简易版 UI框架
若打开的面板不允许同时显示多个,检测到已有同名面板处于Active状态(通过检查面板所属窗体对象的活跃面板栈>0)则对显示中的同名面板进行【特殊关闭】,并缓存面板状态数据放入窗体对象的【面板状态数据栈】,以备恢复面板使用。关闭当前面板后,检查面板窗体对象的不活跃面板队列>0,且【面板状态数据栈】>0时,则需恢复同名面板的【特殊显示】。关闭当前面板前,若关闭的面板是全屏UI,且【全屏UI活跃数】== 1 时,则进行恢复显示出全部被隐藏的活跃面板。若打开的面板是全屏UI,则打开后对所有活跃的面板Hide。原创 2025-01-02 02:37:11 · 481 阅读 · 0 评论 -
【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 · 1336 阅读 · 0 评论 -
【Unity3D】A*寻路(2D究极简单版)
UICamera深度要比MainCamera大,Clear Flags:Depth only,正交视野。运行后点击透明格子empty即执行从(0,0)起点到点击为止终点(测试是(5,5))如下图。MainCamera保持原样;注意Line绘线物体的位置大小旋转信息,不然无法看到线条。empty是透明图片格子,代表可通过路径节点;wall是白色图片格子,代表墙体。原创 2024-12-31 02:32:21 · 385 阅读 · 0 评论 -
【Unity3D】Particle粒子特效或3D物体显示在UGUI上的方案
解释下为什么传递的是世界坐标系的Mask区域,因为Shader使用的是直接将vertex模型坐标系传递到frag,此时frag的worldPosition是精细化的粒子特效模型坐标,而粒子特效位于3D空间下,不属于Canvas空间的,这个模型坐标实际就是世界坐标,因此需要用同样是世界坐标的坐标进行计算。由于粒子特效的ColorMask默认是RGB,没有A(透明通道),而渲染粒子特效的摄像机Background的Alpha是0,就会导致没有A通道的是无法被摄像机渲染出来的(反正测试是这样)原创 2024-12-24 15:37:13 · 1625 阅读 · 0 评论 -
【LuaFramework】LuaFramework_UGUI_V2框架学习
这些类、类成员、类方法都不支持生成wrap,如果你想要使用它们,可以自定义一个C#脚本去间接地使用它们,也就是做个适配器,自定义的脚本要放入CustomSettings.cs的customTypeList列表中,不然是无法生成wrap交给Lua使用的。C#侧调用lua侧的Network.OnSocket(key, value)方法,可以直接找Network.lua文件打开找到OnSocket方法如下。Event.Brocast是Lua侧的事件派发,事件名是key,数据是data。原创 2024-12-21 00:13:13 · 432 阅读 · 0 评论 -
【Unity3D】实现可视化链式结构数据(节点数据)
LinkObj类是节点类,里面有一个位置pos数据是存储该节点窗口位于编辑器的位置SerializableVector2类型是一个可被Json序列化的Vector2,不然无法被序列化。void DrawNodeWindow(int id) 传入的id即GUI.Window第一个参数,一般传节点唯一标识ID。Handles.DrawBezier(起点,终点,起点切线向量,终点切线向量,颜色,null, 线粗度) 绘制贝塞尔曲线。关键词:UnityEditor、可视化节点编辑、Unity编辑器自定义窗口工具。原创 2024-12-19 15:50:14 · 438 阅读 · 0 评论 -
【C#】实现Json转Lua (Json2Lua)
由该方法进行转化json为lua,使用JObject.Parse(json)转为Json对象,后经过判断是数组还是对象类型进行使用不同函数转化(JsonArray2LuaTable、JsonObject2LuaTable)LuaTable:封装JsonArray或JsonObject类型对象,主要是将数组或对象内的成员封装为LuaObject存储起来,数组存储于list,对象成员存储于map,核心GetString方法返回表的字符串形式。前提需引入NewtonsofJson。原创 2024-12-18 20:41:28 · 710 阅读 · 0 评论 -
【WPS Excel】复制表格时,提示“图片太大,超过部份将被截去“ 问题
WPS表格 2019版本 升级到 WPS最新版 WPS-支持多人在线协作编辑Word、Excel和PPT文档_WPS官方网站使用最新版就能够解决这个问题,如果仍旧无法解决可以勾选如下配置 重启Excel解决。请勾选:文件 - 选项 - 编辑 - 不提示且不压缩文件中的图像原创 2024-09-05 17:11:39 · 6904 阅读 · 0 评论 -
Window10系统取消开机密码、取消锁屏密码方法
关键词:去掉开机密码、去掉锁屏密码、Microsoft账户切换本地账户计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device修改DevicePasswordLessBuildVersion值从2改为0。原创 2024-02-22 08:53:04 · 5772 阅读 · 1 评论 -
【Unity】双击txt文件以记事本形式(文本文档)打开
step1是Unity默认处理文件打开函数,如果返回false则代表你不在第一步处理,并且交给Unity处理,如果Unity依旧处理不了(不可识别文件)那么就会进入到step2函数,如果你处理成功了就应该返回true,否则返回false交给Unity处理。这篇参考文章是打开不可识别文件的,所以它会在step1不进行任何处理,而放到step2处理,而我是打开可识别文件txt,json有明确后缀且能正确被Unity识别的,直接处理在step1。原创 2024-02-21 18:12:19 · 640 阅读 · 0 评论 -
钉钉无法连接网络(无法联网、代理可疑、启用代理服务器问题)解决方案
不过我发现勾了后 如果不填任何地址或端口就不会正常保存勾选状态。关键词:钉钉无法连接网络、代理可疑、代理服务器。反正这样就可以连上钉钉了,一脸懵逼。最后你会看到一个新的网络。设置里参考文章是勾选了。原创 2024-02-21 15:02:22 · 6101 阅读 · 0 评论 -
【GoogleAdmob接入后续】app-ads.txt以及部署Firebase Hosting
firebase login failed, app-ads.txt, Google Admob广告审核验证解决。原创 2024-02-09 17:04:58 · 3564 阅读 · 0 评论 -
Animator is not playing an AnimatorController
判断animator的物体gameObject.activeInHierarchy是TRUE才进行animator.Play方法,否则不进行Play,如果Play有回调方法必须执行的,可以用协程或定时器进行,或者采用下面的方法。否则你要避免在animator物体为隐藏时Play(这难度看项目而言,比如将Play操作延后至物体显示时进行Play)原创 2023-12-25 19:44:47 · 1133 阅读 · 0 评论 -
【Unity3D】MAX聚合广告SDK——Pangle广告接入
Unity工程修改gradle插件版本,无论是直接替换默认工程安装目录下的lib还是指定新的gradle都有一个问题,就是force resolved时实际用的还是默认工程lib的(具体原因未知),我们要修改这个文件夹下的lib也替换为gradle_4.2.0的lib文件。其实你如果报错了,那一定是会提示.gradle\wrapper\dists\xxxx的,直接找到它,然后使用gradle_4.2.0_all下的lib整个替换,不要部分替换 要先删除再换!Unity版本2019.4.0f1。原创 2023-11-25 01:38:07 · 1887 阅读 · 0 评论 -
【Unity】接入MAX聚合广告SDK Applovin + GoogleAdmob
坑点:在MAX聚合广告文档里你会看到有个SDK KEY,如果你用了中文翻译可能是错误的KEY,最好是去到聚合广告控制台里找到你的应用SDK KEY,且不要翻译为中文,错误的KEY我是检查到了是有大小写问题,要打开大小写识别去检查所有KEY是否正确。我们使用聚合广告SDK的API加载和显示广告都是传入聚合广告ID,而不是Google Admob的广告ID,其实就是一个聚合广告ID能关联多个其他平台的广告ID,它会用一套优先规则去选择展示哪个平台的广告。原创 2023-11-23 11:39:49 · 5525 阅读 · 1 评论 -
【Unity3D】自动构建Android包时指定aab或apk以及设置sdk版本
注意可能在#UNITY_ANDROID宏内无法通过引用形式查找出来的,应该整个工程全搜索找到这些地方去改动。为true打出Android App bunle文件(.aab) 默认为false打出apk文件。设置指定目标SDK版本。指定最小支持SDK版本。原创 2023-11-21 13:16:53 · 477 阅读 · 0 评论 -
指令FTP/SFTP(有/无密码)连接、下载以及上传
主要说明使用expect自动输入密码形式访问,以下是a.sh脚本(后缀必须是.sh)mac shell环境。原创 2023-09-23 15:38:32 · 2533 阅读 · 0 评论 -
【Unity3D】3D物体Mesh裁剪渲染画面(非UI裁剪)
片元着色器的i.pos就是顶点着色器取到的裁剪坐标经过了透视除法,再经过屏幕映射拿到的屏幕坐标数据,所以这就完成了屏幕空间下的裁剪,也就是可适用于3D物体的裁剪,按道理UI也可以。判定是否在自定义屏幕坐标区域可能才是比较困难的,测试里我直接用最简单的矩形区域裁剪。主要是MeshRenderer这种渲染器的物体裁剪。Shader核心部分。原创 2023-07-03 10:04:50 · 832 阅读 · 0 评论 -
【Unity】百度翻译API接口实时翻译功能
string str = BaiDuTranslate.TranslateCnToEn("你好!string str = BaiDuTranslate.TranslateCnToEn("你好!使用到Newtonsoft.Json和UnityEngine(若非Unity,相关接口是原文的HttpUtility.Encode)需要注册百度账号,进入开发界面申请通用翻译服务。它是要付费的,免费可以用一段时间每个月?申请信息下就有APP ID和密钥。原创 2023-03-06 10:59:54 · 1308 阅读 · 1 评论 -
【XlsxToLua】Excel转Lua工具
创建一个Excel,列举一些很常用的测试下,基本都支持常见类型,更多案例Excel在XlsxToLuaCode\XlsxToLua\bin\Debug\TestExcel,但我没有一个个测试过 只有极个别不行。一般情况我们都会勾选下面2个来整体导出,但因为测试时发现这工具自带的模板excel数据导出有问题,所以暂时仅测我们自己创的。链接:https://pan.baidu.com/s/1m6GAbhXrupac7TSg-Fm_GA。搜索 TypeGuessRows 默认为8 修改为0。原创 2022-11-23 14:52:46 · 908 阅读 · 0 评论 -
【远程办公】使用向日葵远程控制配置过程记录
向日葵智能硬件C1Pro 开机启动配置过程,需配置2.4G网络wifiiPhone手机可能连不上2.4G网络,只能连5G网络wifi的解决思路,还原网络设置。原创 2022-11-03 10:33:20 · 10948 阅读 · 0 评论 -
Firebase-Google Auth(login): com.google.android.gms.common.api.ApiException: 10
我的情况是上传了Google Console发布(内部测试),这个发布出去后Google自己会生成一个包签名重新签名,所以SHA-1就不正确了(已经不是我们自己的包签名SHA-1了)如果你是发布到谷歌平台的,要检查凭据里的信息是不是都用到了Google Console提供的SHA-1,以及firebase的SHA-1也是要用谷歌提供的。找到这个上传密钥证书,使用它下面里面的SHA-1和SHA-256,填充回对应firebase管理页面的应用配置SHA-1里。软件包名称就是包名, com.xxx.xxx。原创 2022-10-26 11:17:49 · 3595 阅读 · 0 评论 -
【解决方案】adb无法连接雷电模拟器问题
解决办法:使用雷电模拟器安装目录下的adb.exe,位置这样找。原创 2022-10-11 00:34:54 · 28445 阅读 · 1 评论 -
【LastPass】chrome谷歌浏览器记录密码工具
下载完成后,启用它,会打开一个它的官网,注册一个账号,登录后就能正常使用了,只要有输入账号密码的地方,这个工具插件就会提示你要不要记录,记录之后登录的话就会类似Cookie一样的提示你,使用对应账号的密码,先会提示账号,等你选择对应账号之后,就会在密码框提示你用这个账号对应的密码。勾选上Autologin 可以自动登录。原创 2022-09-13 18:08:14 · 1701 阅读 · 0 评论 -
【VSCode】启动VSCode时终端自动执行cmd命令,解放双手!
将上面这些复制到最下面,核心是Command Prompt,这段代码意思是自定义Vscode的终端,一共定义了三个名字是"PowerShell"、"Command Prompt"、"Git Bash",其中Command Prompt是以cmd.exe作为终端运行程序,启动这个终端时会自动执行"args"参数的代码即。这就是我每次都会忘记打tsc -w监听ts变化生成js文件的痛苦,现在能够100%保证绝对会执行监听了,因为自动化了!这句代码显而易见就是执行了我的一个bat批处理文件,文件内容很简单!原创 2022-09-13 17:46:51 · 9702 阅读 · 0 评论 -
【Window10】自定义菜单——显示桌面
因为win10系统自带的显示桌面的快捷键S和D太近了!一不小心就变成层叠窗口,如果手速过快就还原不回去了,因此有了这篇文章。为什么我要实现自定义显示桌面菜单,明明win10自带。可在任意空白区域右键点出菜单。原创 2022-09-13 15:57:47 · 680 阅读 · 0 评论