<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[把理性与逻辑灌入电光石火奔腾流淌的指令集……]]></title><description><![CDATA[键盘敲击、字符闪烁 => 编码疯狂、编译流畅 => 持续迭代、无情测试 => 编程可能、皆有路径。]]></description><link>https://blog.youkuaiyun.com/tom_221x</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; tom_221x]]></copyright><item><title><![CDATA[Unity获取鸿蒙系统的键盘高度与导航高度]]></title><link>https://blog.youkuaiyun.com/tom_221x/article/details/163544168</link><guid>https://blog.youkuaiyun.com/tom_221x/article/details/163544168</guid><author>tom_221x</author><pubDate>Thu, 06 Aug 2026 23:03:29 +0800</pubDate><description><![CDATA[文件，可以直接编译调用鸿蒙系统的。代码返回的类型，如果。赋值后，强转必须用与。]]></description><category></category></item><item><title><![CDATA[Unity使用AndroidX获取，导航栏与虚拟键盘的高度]]></title><link>https://blog.youkuaiyun.com/tom_221x/article/details/163269290</link><guid>https://blog.youkuaiyun.com/tom_221x/article/details/163269290</guid><author>tom_221x</author><pubDate>Tue, 28 Jul 2026 15:58:43 +0800</pubDate><description><![CDATA[—可以准确获得虚拟键盘的可见性，但会有一些延迟（大约0.15秒），可能是弹出动画的时间。来判断是否关闭了（从弹出高度到0）——因为在这两种情况下，键盘高度始终返回0（不占用当前。会无法正确获取键盘的关闭状态，即已经收起了却还是可见激活状态。的时候（使用键盘上右侧的向下箭头关闭按钮），的时候，就无法通过键盘的。注释的部分——是不使用。]]></description><category></category></item><item><title><![CDATA[C#手动解析读取JPG图片中，Exif数据的拍摄日期（DateTimeOriginal），不依赖第三方库与Windows平台实现]]></title><link>https://blog.youkuaiyun.com/tom_221x/article/details/162282664</link><guid>https://blog.youkuaiyun.com/tom_221x/article/details/162282664</guid><author>tom_221x</author><pubDate>Wed, 24 Jun 2026 23:55:03 +0800</pubDate><description><![CDATA[在不引入第三方库的情况下，手动实现了一个简单的拍摄日期（起，System.Drawing.Common。）解析器，主要是为了在。]]></description><category></category></item><item><title><![CDATA[Unity使用AndroidX设置状态栏的颜色透明，以及导航栏高度]]></title><link>https://blog.youkuaiyun.com/tom_221x/article/details/162118616</link><guid>https://blog.youkuaiyun.com/tom_221x/article/details/162118616</guid><author>tom_221x</author><pubDate>Fri, 19 Jun 2026 11:19:24 +0800</pubDate><description><![CDATA[—或对应SDK更高的版本。文件中导入命名空间。]]></description><category></category></item><item><title><![CDATA[Unity直接编译Java文件作为插件，导致失败的两个打包设置]]></title><link>https://blog.youkuaiyun.com/tom_221x/article/details/161144401</link><guid>https://blog.youkuaiyun.com/tom_221x/article/details/161144401</guid><author>tom_221x</author><pubDate>Sat, 16 May 2026 16:44:39 +0800</pubDate><description><![CDATA[大模型可以根据，官方文档和网络分享，总结出详细设置流程——但有两个打包设置，如果没有正确设置，那么按照AI流程一模一样走，最后也是无法加载调用。，就可能会被剔除，这样真机测试的时候，就会发现没有反应——这不是代码错误，而是没有打包上传。类名（被混淆了），自然在运行时，就无法正确加载相关类与对象——如果不勾选或勾选。第一个，是托管代码的剥离级别。解决办法是：提供自定义的。代码进行混淆，这样通过。下面即可，没有包名（如。如果剥离级别高，那么。]]></description><category></category></item><item><title><![CDATA[「Unity3D」TextMeshPro的TMP_InputField在Android上使用返回键关闭虚拟键盘，会清空文本或恢复上次内容的问题]]></title><link>https://blog.youkuaiyun.com/tom_221x/article/details/155677080</link><guid>https://blog.youkuaiyun.com/tom_221x/article/details/155677080</guid><author>tom_221x</author><pubDate>Sun, 07 Dec 2025 21:58:42 +0800</pubDate><description><![CDATA[前两个都没有问题，但使用返回键，会自动恢复到上一次的内容——比如，之前是使用前两个方式关闭的虚拟键盘，就会记住这关闭时的文本内容，也就是将文本内容。时，文本框的内容会被键盘的内容覆盖——而手机返回键，将会触发虚拟键盘进入。但为什么手机返回键，就不能保存文本呢？——取消了面板属性的。会被重置为上次内容，并且就算直接修改。经过排查源代码发现，问题出在。一直都是同步的，但当。]]></description><category></category></item><item><title><![CDATA[「Unity3D」TextMeshPro的TMP_Text如何设置Margins自适应不同的屏幕尺寸]]></title><link>https://blog.youkuaiyun.com/tom_221x/article/details/155056477</link><guid>https://blog.youkuaiyun.com/tom_221x/article/details/155056477</guid><author>tom_221x</author><pubDate>Thu, 20 Nov 2025 10:54:14 +0800</pubDate><description><![CDATA[上的四边，然后将锚点设置到四边，即锚点使得四边为0，这样四边就会自适应屏幕尺寸——再将字体设置为。并不会，自适应不同的屏幕尺寸，这样都是一个固定边距，小尺寸就会边距很大，大尺寸边距就会很小。的数值，如下图——黄色字体框与字体大小框重合，但字体大小框与锚点分离。的四边设置为0——相当于锚点可以用这个边距为基础，来进行缩放。第二步，将锚点设置到四边，使用之前文章介绍的方法——来设置四边距（如上图），但是这个。，就会字体大小一起适配不同屏幕。如上图所示，锚点设置到了原来。那么，如何解决这个问题呢？]]></description><category></category></item><item><title><![CDATA[「Unity3D」TextMeshPro的TMP_InputField在实现选中滚动时，textComponent自动校正位置的问题]]></title><link>https://blog.youkuaiyun.com/tom_221x/article/details/154791936</link><guid>https://blog.youkuaiyun.com/tom_221x/article/details/154791936</guid><author>tom_221x</author><pubDate>Thu, 13 Nov 2025 16:48:06 +0800</pubDate><description><![CDATA[如图所示，在实现选中文本滚动时，出现了一个奇怪的问题，即：当拖动手柄。的源代码，最后发现了这个问题——是因为，会使用选中文本的起始位置（即。区域会自动校正位置——但是。，并消除这个偏移，从而产生。那么，文本选中的起始位置。最后，解决方案就是，在。就会不操作，即刻返回。就不会出现这个问题。来生成文本高亮状态。，来计算位置偏移量。]]></description><category></category></item><item><title><![CDATA[「Unity3D」RectTransform的AnchorMin与Max直接定位到Rect四角，使得Left-Top-Right-Bottom都为0]]></title><link>https://blog.youkuaiyun.com/tom_221x/article/details/151072674</link><guid>https://blog.youkuaiyun.com/tom_221x/article/details/151072674</guid><author>tom_221x</author><pubDate>Mon, 01 Sep 2025 16:21:44 +0800</pubDate><description><![CDATA[那么，通过填入数值，而不是拖动手柄，Anchor是可以超出。的范围的——并且，通过代码可以直接计算出，这个使得。但除了操作比较麻烦以外，还有一个情况是，如果这个。当然，可使用另一篇文章，实现的方法，可以只设置。就可以随着父类尺寸而等比缩放。的手柄，就只能在父类区域子类拖动，即处在。的范围内，无法实现上述需求。注意，不要通过代码，直接设置这个。在UGUI中，可以手动拖动。，因为代码模式会修改。]]></description><category></category></item><item><title><![CDATA[「Unity3D」使用C#调用Android的震动功能，有三种方式]]></title><link>https://blog.youkuaiyun.com/tom_221x/article/details/148610190</link><guid>https://blog.youkuaiyun.com/tom_221x/article/details/148610190</guid><author>tom_221x</author><pubDate>Thu, 12 Jun 2025 21:34:43 +0800</pubDate><description><![CDATA[—在[1, 255]之间，-1是默认值，0是不震动。表示：暂停、震动、暂停、震动，这样交替的时间。，否则能正确响应——更多参数类型，参看。——震动时间与强度不可控，嗡嗡嗡的。如果只有两个参数，那么就没有。是有返回值的，所以需要。的最后一个参数，也是。]]></description><category></category></item><item><title><![CDATA[VS Code取消回车换行，自动代码格式化]]></title><link>https://blog.youkuaiyun.com/tom_221x/article/details/148340654</link><guid>https://blog.youkuaiyun.com/tom_221x/article/details/148340654</guid><author>tom_221x</author><pubDate>Fri, 30 May 2025 16:52:18 +0800</pubDate><description><![CDATA[这不是已经取消了吗？——看后面括号里的小字，Modified elsewhere，点击。自动格式化，会把你精心设计布局的代码格式，全部毁掉，此时需要。才能撤销——如果需要撤销非格式化的代码更改，则需要再次。针对某个语言，可以单独设置——继续点击。——进入VS Code设置界面，搜索。都去掉，就可以取消自动格式化了——]]></description><category></category></item><item><title><![CDATA[「Unity3D」TextMeshPro的TMP_InputField在改变高度时，其中textComponent移动的问题解决]]></title><link>https://blog.youkuaiyun.com/tom_221x/article/details/148233649</link><guid>https://blog.youkuaiyun.com/tom_221x/article/details/148233649</guid><author>tom_221x</author><pubDate>Mon, 26 May 2025 17:49:46 +0800</pubDate><description><![CDATA[如图所示， 在多行模式下，换行会推动的区域移动，这是无法通过代码（AnchorPositionY）调整的，因为内部更新，会自动调整这个位移。]]></description><category></category></item><item><title><![CDATA[「Unity3D」TextMeshPro的TMP_InputField复制粘贴时，onValueChanged多次回调的问题解决]]></title><link>https://blog.youkuaiyun.com/tom_221x/article/details/148227495</link><guid>https://blog.youkuaiyun.com/tom_221x/article/details/148227495</guid><author>tom_221x</author><pubDate>Mon, 26 May 2025 16:25:32 +0800</pubDate><description><![CDATA[回调之后，如果使用复制粘贴，则。会在每个字符上调用。]]></description><category></category></item><item><title><![CDATA[「Unity3D」TextMeshPro使用TMP_InputField实现，输入框高度自动扩展与收缩]]></title><link>https://blog.youkuaiyun.com/tom_221x/article/details/147641451</link><guid>https://blog.youkuaiyun.com/tom_221x/article/details/147641451</guid><author>tom_221x</author><pubDate>Thu, 01 May 2025 00:03:44 +0800</pubDate><description><![CDATA[第一，输入框的高度扩展，内部子元素会随着锚点，拉伸变形——要解决这个问题，需要将内部元素改变父类，然后增加父类高度，再恢复父类，这样内部元素（如图中两个按钮），就不会随着高度增加，而拉伸变形。这里增加的逻辑就是：当行数没变的时候，需要检测text的最后一个字符，是否是换行符——如果是，就增加高度，而删除则可以通过行数变化处理，包括一次删除多行。因为，只有在输入字符的时候，才会成立——而删除字符的时候不成立，这样就会剔除，删除换行符是最后一个，但还没删除它，此时行数也没变化。的行变化，去判断换行发生。]]></description><category></category></item><item><title><![CDATA[「Unity3D」图片导入选项取消Read/Write，就无法正确显示导入大小，以及Addressable打包无法正确显示的问题]]></title><link>https://blog.youkuaiyun.com/tom_221x/article/details/147199644</link><guid>https://blog.youkuaiyun.com/tom_221x/article/details/147199644</guid><author>tom_221x</author><pubDate>Mon, 14 Apr 2025 00:01:40 +0800</pubDate><description><![CDATA[然而，作为一个优化项，Read/Write，一般都是不必勾选的，它可以减少CPU内存中的纹理数据，直接只存放在GPU内存中。勾选，就会让图片导入设置中，不勾选Read/Write，就无法正确显示纹理的大小数字。如果在Edit -> Project Settings -> Editor中的。中，就没有正确的纹理数据，从而导致真机上无法争取加载纹理。打包的时候， 如果导入处没有计算压缩纹理大小，那么生成的。更进一步的问题是，使用。]]></description><category></category></item><item><title><![CDATA[「Unity3D」TextMeshPro中的TMP_InputField，用来实现输入框的几个小问题]]></title><link>https://blog.youkuaiyun.com/tom_221x/article/details/147102943</link><guid>https://blog.youkuaiyun.com/tom_221x/article/details/147102943</guid><author>tom_221x</author><pubDate>Wed, 09 Apr 2025 21:56:41 +0800</pubDate><description><![CDATA[虚拟键盘会在失去焦点时自动隐藏，可以使用InputField上Image的raycastPadding，来让InputField的点击区域扩大，这样就可以在不扩大输入区域的时候，获得点击事件，从而不让虚拟键盘退出。设置Scrollbar之后，不能设置Text Component的Font Size为Auto Size，否则Scrollbar无法正确计算现实。在有Scrollbar且可以输入多行的情况下，输入内容的对齐，取决于Text Area的Pivot，即：轴点在上就上对齐，轴点在下就下对齐。]]></description><category></category></item><item><title><![CDATA[「Unity3D」TMP_InputField关闭虚拟键盘后，再次打开虚拟键盘，此时无法回调onSelect的问题]]></title><link>https://blog.youkuaiyun.com/tom_221x/article/details/146885184</link><guid>https://blog.youkuaiyun.com/tom_221x/article/details/146885184</guid><author>tom_221x</author><pubDate>Mon, 31 Mar 2025 21:43:56 +0800</pubDate><description><![CDATA[依然保持了选中状态，而再次选中同一个对象，不会响应回调，在。是的，这个返回取消，不能正确释放选中状态，还调用了。自己——而失去焦点的情况，会清除选中状态，所以。所以，再次打开虚拟键盘，只有第一种正确回调。不调用的问题，就是关闭虚拟键盘时，手动调用。的时候，此时再打开虚拟键盘时，就不会调用。于此同时，对于这三种情况，关闭虚拟键盘时。是被直接代码调用的，而不是通过。选中的时候回调，但在虚拟键盘。那么，解决的方法就是——使用。——因为，第二种与第三种，会调用两次，即：一次来自。就是返回取消的时候，]]></description><category></category></item><item><title><![CDATA[「Unity3D」使用Il2CppSetOption优化IL2CPP生成C++代码的性能]]></title><link>https://blog.youkuaiyun.com/tom_221x/article/details/146811193</link><guid>https://blog.youkuaiyun.com/tom_221x/article/details/146811193</guid><author>tom_221x</author><pubDate>Mon, 31 Mar 2025 15:28:30 +0800</pubDate><description><![CDATA[显然，运行时可以全部给关闭了，不需要每帧各个对象检查空值与越界。（除数为0检查）——其中，前两个是默认开启的，后一个是默认关闭的。的例子，而这个可以应用全局，所以这里贴出这个设置，放到。]]></description><category></category></item><item><title><![CDATA[「Unity3D」使用C#获取Android虚拟键盘的高度]]></title><link>https://blog.youkuaiyun.com/tom_221x/article/details/146512608</link><guid>https://blog.youkuaiyun.com/tom_221x/article/details/146512608</guid><author>tom_221x</author><pubDate>Tue, 25 Mar 2025 22:10:36 +0800</pubDate><description><![CDATA[一个解决方案是，使用协程，即只在高度变化时才返回（利用。，大概20帧左右，才能获取虚拟键盘高度的变化——于是。也剔除了状态栏与导航栏，且不会剔除。在实际中的问题是，虚拟键盘有动画，剔除了状态栏与导航栏，并且在有。的时候，会剔除这个遮挡区域。获取有延迟，所以需要不断调用。对象，就会反复创建与释放。，就是虚拟键盘的高度。]]></description><category></category></item><item><title><![CDATA[「Unity3D」UGUI运行时设置元素的锚点Anchor，维持元素Rect的显示不变，即待在原处]]></title><link>https://blog.youkuaiyun.com/tom_221x/article/details/146266964</link><guid>https://blog.youkuaiyun.com/tom_221x/article/details/146266964</guid><author>tom_221x</author><pubDate>Fri, 14 Mar 2025 21:00:17 +0800</pubDate><description><![CDATA[显示不变——这是利用锚点适配不同分辨率后的结果——这样其父类的改变，就可以不影响子类的缩放，如：将子类锚点设置为中心点。，只有联动显示的模式，即相当于开启原始模式——不改变。但有时候，我们需要只改变锚点，而保持。那么，在运行时用代码设置。在编辑器中，通过设置。保持原样，就需要改变。跟着变动，就可以维持。的变化，从而维持元素。]]></description><category></category></item></channel></rss>