- 博客(208)
- 收藏
- 关注
原创 代码设计模式:一句话直击内涵与意义、极简代码示例、基础3类27种,以及更多概念与视角
有些设计模式日用而不知,有些设计模式看似概念复杂实则内核简单,还有些设计模式则化繁为简直至少即是多——本文,将在极简形式下,传递出基础设计模式最核心的基本思想,一共3类27种,即:创建型模式6种、结构型模式9种、行为型模式12种。
2024-07-18 21:39:00
889
原创 MojoTween:使用「Burst、Jobs、Collections、Mathematics」优化实现的Unity顶级「Tween动画引擎」
工欲善其事,必先利其器——MojoTween助您实现动人特效。
2023-09-08 13:15:44
936
原创 「游戏引擎Mojoc」(1)简介
Mojoc 是一个开源(MIT License),跨平台,使用C语言编写的游戏引擎。基于OpenGLES3的渲染和C99的语法写成。目前,可以跨平台工作在Android和IOS上,也很容易扩展到其它平台。GitHub地址:scottcgi/Mojoc核心理念保持简单,追求简单,简单充满了力量。而简单的背后,是更多的思考,实践与重构。主要特性所有的代码实现,只是用了C语言和...
2017-10-23 10:20:37
2363
原创 「Unity3D」TextMeshPro的TMP_Text如何设置Margins自适应不同的屏幕尺寸
上的四边,然后将锚点设置到四边,即锚点使得四边为0,这样四边就会自适应屏幕尺寸——再将字体设置为。并不会,自适应不同的屏幕尺寸,这样都是一个固定边距,小尺寸就会边距很大,大尺寸边距就会很小。的数值,如下图——黄色字体框与字体大小框重合,但字体大小框与锚点分离。的四边设置为0——相当于锚点可以用这个边距为基础,来进行缩放。第二步,将锚点设置到四边,使用之前文章介绍的方法——来设置四边距(如上图),但是这个。,就会字体大小一起适配不同屏幕。如上图所示,锚点设置到了原来。那么,如何解决这个问题呢?
2025-11-20 10:54:14
290
原创 「Unity3D」TextMeshPro的TMP_InputField在实现选中滚动时,textComponent自动校正位置的问题
如图所示,在实现选中文本滚动时,出现了一个奇怪的问题,即:当拖动手柄。的源代码,最后发现了这个问题——是因为,会使用选中文本的起始位置(即。区域会自动校正位置——但是。,并消除这个偏移,从而产生。那么,文本选中的起始位置。最后,解决方案就是,在。就会不操作,即刻返回。就不会出现这个问题。来生成文本高亮状态。,来计算位置偏移量。
2025-11-13 16:48:06
337
原创 「Unity3D」RectTransform的AnchorMin与Max直接定位到Rect四角,使得Left-Top-Right-Bottom都为0
那么,通过填入数值,而不是拖动手柄,Anchor是可以超出。的范围的——并且,通过代码可以直接计算出,这个使得。但除了操作比较麻烦以外,还有一个情况是,如果这个。当然,可使用另一篇文章,实现的方法,可以只设置。就可以随着父类尺寸而等比缩放。的手柄,就只能在父类区域子类拖动,即处在。的范围内,无法实现上述需求。注意,不要通过代码,直接设置这个。在UGUI中,可以手动拖动。,因为代码模式会修改。
2025-09-01 16:21:44
463
原创 「Unity3D」使用C#调用Android的震动功能,有三种方式
—在[1, 255]之间,-1是默认值,0是不震动。表示:暂停、震动、暂停、震动,这样交替的时间。,否则能正确响应——更多参数类型,参看。——震动时间与强度不可控,嗡嗡嗡的。如果只有两个参数,那么就没有。是有返回值的,所以需要。的最后一个参数,也是。
2025-06-12 21:34:43
748
原创 VS Code取消回车换行,自动代码格式化
这不是已经取消了吗?——看后面括号里的小字,Modified elsewhere,点击。自动格式化,会把你精心设计布局的代码格式,全部毁掉,此时需要。才能撤销——如果需要撤销非格式化的代码更改,则需要再次。针对某个语言,可以单独设置——继续点击。——进入VS Code设置界面,搜索。都去掉,就可以取消自动格式化了——
2025-05-30 16:52:18
539
原创 「Unity3D」TextMeshPro的TMP_InputField在改变高度时,其中textComponent移动的问题解决
如图所示, 在多行模式下,换行会推动的区域移动,这是无法通过代码(AnchorPositionY)调整的,因为内部更新,会自动调整这个位移。
2025-05-26 17:49:46
659
原创 「Unity3D」TextMeshPro的TMP_InputField复制粘贴时,onValueChanged多次回调的问题解决
回调之后,如果使用复制粘贴,则。会在每个字符上调用。
2025-05-26 16:25:32
454
原创 「Unity3D」TextMeshPro使用TMP_InputField实现,输入框高度自动扩展与收缩
第一,输入框的高度扩展,内部子元素会随着锚点,拉伸变形——要解决这个问题,需要将内部元素改变父类,然后增加父类高度,再恢复父类,这样内部元素(如图中两个按钮),就不会随着高度增加,而拉伸变形。这里增加的逻辑就是:当行数没变的时候,需要检测text的最后一个字符,是否是换行符——如果是,就增加高度,而删除则可以通过行数变化处理,包括一次删除多行。因为,只有在输入字符的时候,才会成立——而删除字符的时候不成立,这样就会剔除,删除换行符是最后一个,但还没删除它,此时行数也没变化。的行变化,去判断换行发生。
2025-05-01 00:03:44
1077
原创 「Unity3D」图片导入选项取消Read/Write,就无法正确显示导入大小,以及Addressable打包无法正确显示的问题
然而,作为一个优化项,Read/Write,一般都是不必勾选的,它可以减少CPU内存中的纹理数据,直接只存放在GPU内存中。勾选,就会让图片导入设置中,不勾选Read/Write,就无法正确显示纹理的大小数字。如果在Edit -> Project Settings -> Editor中的。中,就没有正确的纹理数据,从而导致真机上无法争取加载纹理。打包的时候, 如果导入处没有计算压缩纹理大小,那么生成的。更进一步的问题是,使用。
2025-04-14 00:01:40
408
原创 「Unity3D」TextMeshPro中的TMP_InputField,用来实现输入框的几个小问题
虚拟键盘会在失去焦点时自动隐藏,可以使用InputField上Image的raycastPadding,来让InputField的点击区域扩大,这样就可以在不扩大输入区域的时候,获得点击事件,从而不让虚拟键盘退出。设置Scrollbar之后,不能设置Text Component的Font Size为Auto Size,否则Scrollbar无法正确计算现实。在有Scrollbar且可以输入多行的情况下,输入内容的对齐,取决于Text Area的Pivot,即:轴点在上就上对齐,轴点在下就下对齐。
2025-04-09 21:56:41
953
原创 「Unity3D」TMP_InputField关闭虚拟键盘后,再次打开虚拟键盘,此时无法回调onSelect的问题
依然保持了选中状态,而再次选中同一个对象,不会响应回调,在。是的,这个返回取消,不能正确释放选中状态,还调用了。自己——而失去焦点的情况,会清除选中状态,所以。所以,再次打开虚拟键盘,只有第一种正确回调。不调用的问题,就是关闭虚拟键盘时,手动调用。的时候,此时再打开虚拟键盘时,就不会调用。于此同时,对于这三种情况,关闭虚拟键盘时。是被直接代码调用的,而不是通过。选中的时候回调,但在虚拟键盘。那么,解决的方法就是——使用。——因为,第二种与第三种,会调用两次,即:一次来自。就是返回取消的时候,
2025-03-31 21:43:56
712
原创 「Unity3D」使用Il2CppSetOption优化IL2CPP生成C++代码的性能
显然,运行时可以全部给关闭了,不需要每帧各个对象检查空值与越界。(除数为0检查)——其中,前两个是默认开启的,后一个是默认关闭的。的例子,而这个可以应用全局,所以这里贴出这个设置,放到。
2025-03-31 15:28:30
569
原创 「Unity3D」使用C#获取Android虚拟键盘的高度
一个解决方案是,使用协程,即只在高度变化时才返回(利用。,大概20帧左右,才能获取虚拟键盘高度的变化——于是。也剔除了状态栏与导航栏,且不会剔除。在实际中的问题是,虚拟键盘有动画,剔除了状态栏与导航栏,并且在有。的时候,会剔除这个遮挡区域。获取有延迟,所以需要不断调用。对象,就会反复创建与释放。,就是虚拟键盘的高度。
2025-03-25 22:10:36
629
原创 「Unity3D」UGUI运行时设置元素的锚点Anchor,维持元素Rect的显示不变,即待在原处
显示不变——这是利用锚点适配不同分辨率后的结果——这样其父类的改变,就可以不影响子类的缩放,如:将子类锚点设置为中心点。,只有联动显示的模式,即相当于开启原始模式——不改变。但有时候,我们需要只改变锚点,而保持。那么,在运行时用代码设置。在编辑器中,通过设置。保持原样,就需要改变。跟着变动,就可以维持。的变化,从而维持元素。
2025-03-14 21:00:17
455
原创 「Unity3D」UGUI将元素固定在,距离屏幕边缘的某个比例,以及保持元素自身比例
在不同分辨率的屏幕下,UI元素按照自身像素大小,会发生位置与比例的变化,本文仅利用锚点(Anchors)使用,来实现UI元素,固定在某个比例距离的屏幕边缘。
2025-03-10 15:16:38
663
原创 「Unity3D」Addressable构建失败:Build Task CreateBuiltInShadersBundle failed with exception与SBP ErrorExcept
经过测试发现, 是所有资源的。中,添加了任意一个内置资源,,本来一直好好的,后来突然。以及同上面后两个错误一样。就可以构建成功,否则不行。具体为什么会这样,应该是。
2025-03-09 11:18:58
849
原创 「Unity3D」在Unity中使用C#控制显示Android的状态栏
本文采用第二种方法,简单快捷,但会有几个坑,全部避开之后才能正确显示,先给正确代码,再指出踩坑点——只有一个函数,直接运行即可,内部精确控制,可以自定义。——在匿名函数中需要重新获取,外部的会在外层函数结束时回收,内部的在UI线程中执行。——这个越界int类型了,C#向Java传递会有问题,需要控制一下溢出。——控制Android UI的调用,需要在UI线程中执行。——需要设置,否则状态栏会自动应藏。即可,注意int类型的越界处理。会越界int类型,需要。
2025-01-27 20:47:56
1305
1
原创 「Unity3D」属性面板(Inspector)上增删操作,序列化的Dictionary对象的k-v数值
属性面板(Inspector)上增删操作,序列化的Dictionary对象的k-v数值。
2024-08-16 16:14:25
802
原创 「Unity3D」TextMeshPro-Text(UI)无法拖放到TextMeshPro的属性面板上
TextMeshPro-Text(UI)无法拖放到TextMeshPro的属性面板上.
2024-08-14 17:19:23
944
2
原创 「Unity3D」自动布局LayoutElement、ContentSizeFitter、AspectRatioFitter、GridLayoutGroup
自动布局LayoutElement、ContentSizeFitter、AspectRatioFitter、GridLayoutGroup
2024-07-31 20:37:08
1547
原创 「Unity3D」场景中的距离单位Unit与相关设置PixelsToUnits、PixelsPerUnit
这就涉及到一个问题,即如何按照比例显示像素?或说如何显示2D图片的大小?
2024-07-25 16:06:51
1643
原创 「Unity3D」Addressables打包报错:InvalidOperationException: Unable to build with the current configuration
Addressables打包报错:InvalidOperationException: Unable to build with the current configuration
2024-06-26 16:06:57
680
原创 「Unity3D」解决2022的PackageManager无法显示官方插件Burst和Collections的最新版本
实际上,在2020或2021版本中,可以看到两者的最新版本是。操作加载成功之后,就可以看到最新的插件版本了。非常奇怪Unity2022版本的。的最新版本,但是官方文档已经。那么解决的办法就是,手动添加。会发现插件的注册地址是。,并且可以正确安装。
2023-01-15 14:39:55
2229
2
原创 「Unity3D」设置真机满帧率(60Hz,90Hz,144Hz等)运行
如果想要Unity的真机包,满帧率运行,有两个地方需要配合设置。第一个,是图形质量(Quality)下的垂直同步(VSync Count)选择——Every B Blank。第二个,是使用代码控制运行时的帧率。Application.targetFrameRate = -1;...
2021-07-16 11:10:27
5973
3
原创 「Unity3D」真机Burst闪退崩溃:Unable to find internal function Unity.Burst.LowLevel.BurstCompilerServices
Unity,在开启了[BurstCompile]之后,编辑器可以正常运行,但在真机上会闪退,日志显示:Unable to find internal function Unity.Burst.LowLevel.BurstCompilerServices::GetOrCreateSharedMemory这是因为开启了打包选项中,剥离代码的高级水平,如下图事实上,在官方文档中就指出,High Stripping Level需要使用link.xml来定制,代码具体的剥离规则。When you sel
2021-07-16 10:55:53
1718
原创 「Unity3D」MojoUnity-TextPro:一个简洁高效的UGUI-Text图文混排(带事件处理)的扩展实现
MojoUnity-TextPro是一个UGUI-Text的一个扩展,使用<Quad/>标签实现了图文混排,以及图片添加事件处理。功能特点:实现简洁,算法高效。图片和事件可序列化到Unity Inspector上。自定定义图片标签。容易集成,容易使用。支持Unity 2018及以上版本。使用示例自定义插入标签序列化图片设置序列化事件设置运行实例实现原理**简单概括:**使用<quad/>在Text中占位,根据图片的大小动态设置<qu
2021-06-07 16:07:55
1174
1
原创 「Unity3D」MojoUnity-Shake:使用PerlinNoise实现Unity通用的震动(抖动)特效工具
MojoUnity-Shake是一个动画工具,可以效果逼真地抖动float vector2 vector3类型的数值。它使用协程实现了Smooth和PerlinNoise算法,并且扩展了Transform,可以一行代码完成Position Scale Rotation的抖动动画。功能特点:两种高效算法实现,抖动效果丝滑。一行代码简单使用。可以自由扩展,实现任何组件对象的属性抖动效果。使用了BurstCompile优化。支持Unity 2018及以上版本。使用示例Position XYZ
2021-04-23 21:55:00
876
原创 「Unity3D」MojoUnity-Editor:一个简单通用的Unity属性面板(Inspector)和窗口(Window)的扩展
MojoUnity-Editor是UnityEditor的一个扩展,它可以简单快速地自定义Unity的属性面板(Inspector)和窗口(Window),它使用了一种全新的方式——跳过很多繁琐的细节,来控制Unity界面上属性的绘制与交互。具体你可以使用以下特性,来构建你复杂的属性面板和窗口:自定义属性的显示格式。自定义属性的交互逻辑。自定义数组和对象的现实和交互。自定义分组和嵌套分套的显示。自定义窗口的显示和交互。自定义窗口数据的读写。使用示例源码下载Github:
2021-04-14 17:01:15
1131
2
原创 IOS 控制GLKView绘制区域,适配“刘海”不绘制
与其控制GLKView的大小,或是在游戏层面避开“刘海”,不如直接控制window大小剔除“刘海”区域,view层使用通用的绘制方案。class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplic
2021-02-08 19:58:04
515
原创 C# 利用元组(ValueTuple)在「堆栈」上创建数组的一个方法
通常,new[]出的数组在堆上,struct可以在堆栈上,但不能使用index索引访问,而想要在堆栈上使用index索引,可以给struct添加get索引方法,:public object this [int index] { get { throw null; }}亦或是,使用元组来进行转换,如:// ValueTuple实现了ITuple接口var values = (ITuple) (1, 2, 3);for (var i = 0; i < values.Lengt
2021-02-03 14:21:59
698
原创 「Unity3D」UGUI Text <quad/> 使用详解:一种实现图文混排的策略
首先,我们看一下官方说明。This is only useful for text meshes and renders an image inline withthe text.关键词在于:text meshes 和 image inline ——这说明,<quad/>设计是用在TextMesh而不是Text,并且它是一个文本内嵌图片,即可以自动图文混排。其次,看一下官方例子。<quad material=1 size=20 x=0.1 y=0.1 width=0.5 he
2021-01-31 12:42:25
6619
2
原创 「Unity3D」解决VS断点Could not insert breakpoint ‘xxx’: The breakpoint could not be bound问题
项目重命名,或是复制一个项目过后,可能会出现无法断点,或是仍然断点“复制”项目的问题,我们需要让unity重新生成断点信息文件。删除目录 “项目/Library/ScriptAssemblies” 里面所有的文件。然后,重启unity会自动生成里面文件。最后,第一次断点,需要等待unity项目运行,断点才会生效。...
2021-01-10 11:14:06
1541
原创 「Unity3D」使用ISerializationCallbackReceiver接口,序列化Dictionary数据
Unity无法自动序列化Dictionary数据结构,解决思路是,我们将Dictionary的数据存储在可以序列化的结构里(如List),然后通过Dictionary与可序列化结构的互操作,来完成Dictionary的存储与加载,而这个互操作的时机,就是ISerializationCallbackReceiver接口的实现。第一步实现ISerializationCallbackReceiver接口,我们需要继承MonoBehaviour,然后接口回调才会在需要的时候触发。第二步接口需要实现两个函数,
2021-01-07 15:50:37
1026
原创 C# 使用md5查找文件夹内重复的文件
思路:通过文件的md5值和大小,判断文件是否相同。using System.Collections.Generic;using System.Security.Cryptography;using System.IO;public static class FileTool{ // 文件检索目录 private const string DirPath = ""; // 重复文件的存放目录 private const string SameFilesP
2020-12-03 21:54:24
1389
原创 「Unity3D」极简调用IOS Obj-C代码实现原生分享
如题,本文将会给出完整可运行的代码,以及注意事项。第一步,编写IOS端的分享代码。只有一个实现文件:SocialShare.mmextern "C"{ // 提供给Unity调用 void IOSSocialShare(const char* cText, const char* cUrl, const char* cTexData) { // 文字 NSString* textStr = [NSString stringWithUTF8
2020-11-28 21:29:46
857
原创 人工智能学习资料整理:从入门到全面了解
视频[链接] 吴恩达—机器学习(网易云课堂,入门,中文)[链接] 吴恩达—深度学习(网易云课堂,进阶,中文)[链接] 3Blue1Brown—深度学习(哔哩哔哩,深入浅出讲解,中文字幕)[链接] 谷歌—机器学习(官网,入门+运行,中文/英文)书籍[链接] 神经网络与深度学习—Neural Networks and Deep Learning(在线阅读,深入细节,英文)[链接] 深度学习—Deep Learning(在线阅读、PDF、购买书籍,基础教科书,中文/英文)[链接] 神经网络与
2020-07-31 20:55:30
583
原创 Unity3D RectTransform使用详解:布局、属性、方法、设计
本文,将会详细介绍RectTransform的布局、属性、方法、设计,并会解释其使用方式及原理。
2020-05-09 15:15:12
3912
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅