
Unity3D
文章平均质量分 67
scott.cgi
要么编程,要么被编程,编程是一种超能力
展开
-
「Unity3D」图片导入选项取消Read/Write,就无法正确显示导入大小,以及Addressable打包无法正确显示的问题
然而,作为一个优化项,Read/Write,一般都是不必勾选的,它可以减少CPU内存中的纹理数据,直接只存放在GPU内存中。勾选,就会让图片导入设置中,不勾选Read/Write,就无法正确显示纹理的大小数字。如果在Edit -> Project Settings -> Editor中的。中,就没有正确的纹理数据,从而导致真机上无法争取加载纹理。打包的时候, 如果导入处没有计算压缩纹理大小,那么生成的。更进一步的问题是,使用。原创 2025-04-14 00:01:40 · 258 阅读 · 0 评论 -
「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 · 382 阅读 · 0 评论 -
「Unity3D」TMP_InputField关闭虚拟键盘后,再次打开虚拟键盘,此时无法回调onSelect的问题
依然保持了选中状态,而再次选中同一个对象,不会响应回调,在。是的,这个返回取消,不能正确释放选中状态,还调用了。自己——而失去焦点的情况,会清除选中状态,所以。所以,再次打开虚拟键盘,只有第一种正确回调。不调用的问题,就是关闭虚拟键盘时,手动调用。的时候,此时再打开虚拟键盘时,就不会调用。于此同时,对于这三种情况,关闭虚拟键盘时。是被直接代码调用的,而不是通过。选中的时候回调,但在虚拟键盘。那么,解决的方法就是——使用。——因为,第二种与第三种,会调用两次,即:一次来自。就是返回取消的时候,原创 2025-03-31 21:43:56 · 377 阅读 · 0 评论 -
「Unity3D」使用Il2CppSetOption优化IL2CPP生成C++代码的性能
显然,运行时可以全部给关闭了,不需要每帧各个对象检查空值与越界。(除数为0检查)——其中,前两个是默认开启的,后一个是默认关闭的。的例子,而这个可以应用全局,所以这里贴出这个设置,放到。原创 2025-03-31 15:28:30 · 287 阅读 · 0 评论 -
「Unity3D」使用C#获取Android虚拟键盘的高度
一个解决方案是,使用协程,即只在高度变化时才返回(利用。,大概20帧左右,才能获取虚拟键盘高度的变化——于是。也剔除了状态栏与导航栏,且不会剔除。在实际中的问题是,虚拟键盘有动画,剔除了状态栏与导航栏,并且在有。的时候,会剔除这个遮挡区域。获取有延迟,所以需要不断调用。对象,就会反复创建与释放。,就是虚拟键盘的高度。原创 2025-03-25 22:10:36 · 303 阅读 · 0 评论 -
「Unity3D」UGUI运行时设置元素的锚点Anchor,维持元素Rect的显示不变,即待在原处
显示不变——这是利用锚点适配不同分辨率后的结果——这样其父类的改变,就可以不影响子类的缩放,如:将子类锚点设置为中心点。,只有联动显示的模式,即相当于开启原始模式——不改变。但有时候,我们需要只改变锚点,而保持。那么,在运行时用代码设置。在编辑器中,通过设置。保持原样,就需要改变。跟着变动,就可以维持。的变化,从而维持元素。原创 2025-03-14 21:00:17 · 286 阅读 · 0 评论 -
「Unity3D」UGUI将元素固定在,距离屏幕边缘的某个比例,以及保持元素自身比例
在不同分辨率的屏幕下,UI元素按照自身像素大小,会发生位置与比例的变化,本文仅利用锚点(Anchors)使用,来实现UI元素,固定在某个比例距离的屏幕边缘。原创 2025-03-10 15:16:38 · 390 阅读 · 0 评论 -
「Unity3D」Addressable构建失败:Build Task CreateBuiltInShadersBundle failed with exception与SBP ErrorExcept
经过测试发现, 是所有资源的。中,添加了任意一个内置资源,,本来一直好好的,后来突然。以及同上面后两个错误一样。就可以构建成功,否则不行。具体为什么会这样,应该是。原创 2025-03-09 11:18:58 · 341 阅读 · 0 评论 -
「Unity3D」在Unity中使用C#控制显示Android的状态栏
本文采用第二种方法,简单快捷,但会有几个坑,全部避开之后才能正确显示,先给正确代码,再指出踩坑点——只有一个函数,直接运行即可,内部精确控制,可以自定义。——在匿名函数中需要重新获取,外部的会在外层函数结束时回收,内部的在UI线程中执行。——这个越界int类型了,C#向Java传递会有问题,需要控制一下溢出。——控制Android UI的调用,需要在UI线程中执行。——需要设置,否则状态栏会自动应藏。即可,注意int类型的越界处理。会越界int类型,需要。原创 2025-01-27 20:47:56 · 911 阅读 · 0 评论 -
「Unity3D」属性面板(Inspector)上增删操作,序列化的Dictionary对象的k-v数值
属性面板(Inspector)上增删操作,序列化的Dictionary对象的k-v数值。原创 2024-08-16 16:14:25 · 609 阅读 · 0 评论 -
「Unity3D」TextMeshPro-Text(UI)无法拖放到TextMeshPro的属性面板上
TextMeshPro-Text(UI)无法拖放到TextMeshPro的属性面板上.原创 2024-08-14 17:19:23 · 748 阅读 · 0 评论 -
「Unity3D」自动布局LayoutElement、ContentSizeFitter、AspectRatioFitter、GridLayoutGroup
自动布局LayoutElement、ContentSizeFitter、AspectRatioFitter、GridLayoutGroup原创 2024-07-31 20:37:08 · 1261 阅读 · 0 评论 -
「Unity3D」场景中的距离单位Unit与相关设置PixelsToUnits、PixelsPerUnit
这就涉及到一个问题,即如何按照比例显示像素?或说如何显示2D图片的大小?原创 2024-07-25 16:06:51 · 1043 阅读 · 0 评论 -
「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 · 467 阅读 · 0 评论 -
MojoTween:使用「Burst、Jobs、Collections、Mathematics」优化实现的Unity顶级「Tween动画引擎」
工欲善其事,必先利其器——MojoTween助您实现动人特效。原创 2023-09-08 13:15:44 · 849 阅读 · 0 评论 -
「Unity3D」解决2022的PackageManager无法显示官方插件Burst和Collections的最新版本
实际上,在2020或2021版本中,可以看到两者的最新版本是。操作加载成功之后,就可以看到最新的插件版本了。非常奇怪Unity2022版本的。的最新版本,但是官方文档已经。那么解决的办法就是,手动添加。会发现插件的注册地址是。,并且可以正确安装。原创 2023-01-15 14:39:55 · 1982 阅读 · 2 评论 -
「Unity3D」设置真机满帧率(60Hz,90Hz,144Hz等)运行
如果想要Unity的真机包,满帧率运行,有两个地方需要配合设置。第一个,是图形质量(Quality)下的垂直同步(VSync Count)选择——Every B Blank。第二个,是使用代码控制运行时的帧率。Application.targetFrameRate = -1;...原创 2021-07-16 11:10:27 · 5629 阅读 · 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 · 1584 阅读 · 0 评论 -
「Unity3D」MojoUnity-TextPro:一个简洁高效的UGUI-Text图文混排(带事件处理)的扩展实现
MojoUnity-TextPro是一个UGUI-Text的一个扩展,使用<Quad/>标签实现了图文混排,以及图片添加事件处理。功能特点:实现简洁,算法高效。图片和事件可序列化到Unity Inspector上。自定定义图片标签。容易集成,容易使用。支持Unity 2018及以上版本。使用示例自定义插入标签序列化图片设置序列化事件设置运行实例实现原理**简单概括:**使用<quad/>在Text中占位,根据图片的大小动态设置<qu原创 2021-06-07 16:07:55 · 1025 阅读 · 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 · 732 阅读 · 0 评论 -
「Unity3D」MojoUnity-Editor:一个简单通用的Unity属性面板(Inspector)和窗口(Window)的扩展
MojoUnity-Editor是UnityEditor的一个扩展,它可以简单快速地自定义Unity的属性面板(Inspector)和窗口(Window),它使用了一种全新的方式——跳过很多繁琐的细节,来控制Unity界面上属性的绘制与交互。具体你可以使用以下特性,来构建你复杂的属性面板和窗口:自定义属性的显示格式。自定义属性的交互逻辑。自定义数组和对象的现实和交互。自定义分组和嵌套分套的显示。自定义窗口的显示和交互。自定义窗口数据的读写。使用示例源码下载Github:原创 2021-04-14 17:01:15 · 1037 阅读 · 2 评论 -
「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 · 5969 阅读 · 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 · 1397 阅读 · 0 评论 -
「Unity3D」使用ISerializationCallbackReceiver接口,序列化Dictionary数据
Unity无法自动序列化Dictionary数据结构,解决思路是,我们将Dictionary的数据存储在可以序列化的结构里(如List),然后通过Dictionary与可序列化结构的互操作,来完成Dictionary的存储与加载,而这个互操作的时机,就是ISerializationCallbackReceiver接口的实现。第一步实现ISerializationCallbackReceiver接口,我们需要继承MonoBehaviour,然后接口回调才会在需要的时候触发。第二步接口需要实现两个函数,原创 2021-01-07 15:50:37 · 919 阅读 · 0 评论 -
「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 · 802 阅读 · 0 评论 -
Unity3D RectTransform使用详解:布局、属性、方法、设计
本文,将会详细介绍RectTransform的布局、属性、方法、设计,并会解释其使用方式及原理。原创 2020-05-09 15:15:12 · 3317 阅读 · 0 评论 -
「Unity3D」(10)自定义属性面板Inspector详解
通常情况是不需要扩展属性面板的,也就是Inspector,但如果需要开发定制的工具和插件,那么就需要扩展属性面板来完成需求。本文会对自定义扩展Inspector进行全面的介绍。工具类和概念的介绍自定义Inspector有两个层面,第一个是扩展已有属性的功能,第二个是按照意图增加新的面板功能。扩展已有的功能,包括替换显示文字,动态控制可见性,增加动画,错误提示,数据的校验和限制等等。增加...原创 2018-03-05 11:45:57 · 22564 阅读 · 6 评论 -
「Unity3D」(11) Inspector FadeGroup动画嵌套问题和实现Tween Ease效果
本文将讨论面板属性Inspector的动画,也就是BeginFadeGroup与EndFadeGroup,嵌套使用问题的形成和解决。以及如何应用Tween Ease的各种效果到Inspector动画控制上。FadeGroup动画嵌套当一对[BeginFadeGroup, EndFadeGroup]嵌套在,另一对[BeginFadeGroup, EndFadeGroup]之中的时候,会产...原创 2018-03-23 12:07:29 · 1122 阅读 · 0 评论 -
「Unity3D」(12)EditorWindow使用ScriptableObject绘制界面
通常绘制EditorWindow需要手动一个个手动绘制控件和布局,但是联想到Inspector可以根据SerializedObject对象自动绘制和布局,那么如果我们可以根据SerializedObject对象来控制EditorWindow的显示,然后在此之上再进行一些自定义工作,岂不是会方便快捷很多。本文将会介绍,如何使用ScriptableObject对象的Inspector绘制,来填充E...原创 2018-06-04 15:12:08 · 3529 阅读 · 2 评论 -
「Unity3D」(8)Rigidbody2D卡顿问题和重心旋转模拟
本文主要讨论,在Unity中使用物理引擎Physics2D的三个方面的内容:如何让Rigidbody2D物理模拟看起来更加的顺滑。介绍几个造成运动卡顿的原因和解决方法。针对Rigidbody2D的重心旋转模拟。让运动更加顺滑最直接的方法,就是设置Rigidbody2D的Interpolate属性,面板属性提供了下拉选项,有None,Interpolate,Extrapolate。官方文档介绍原创 2017-12-13 22:45:24 · 5199 阅读 · 0 评论 -
Unity3D UGUI 使用ScrollRect实现地图拖放及多点缩放
UGUI中ScrollRect本来是用来做水平和垂直的滑动列表的。并且内置了惯性滑动和边界弹性限制。但经过一些设置,完全可以用来做一个可以拖动的地图功能。首先,介绍一下属性的意思。Content: 这是ScrollRect显示内容的实际区域。Horizontal: 是否可以水平滚动Vertical:原创 2015-12-16 20:54:23 · 8566 阅读 · 5 评论 -
「MojoUnityJson」C#实现超级简单和高效的JSON解析器
MojoUnityJson是使用C#实现的JSON解析器 ,算法思路来自于游戏引擎Mojoc的C语言实现Json.h。借助C#的类库,可以比C的实现更加的简洁和全面,尤其是处理Unicode转义字符(\u开头)的解析,C#的StringBuilder本身就支持了Unicode码点(code point)。MojoUnityJson使用递归下降的解析模式,核心解析代码只有450行(去掉空行可能只原创 2018-01-22 22:46:32 · 1374 阅读 · 1 评论 -
「Unity3D」(9)自定义编辑器菜单扩展总结
添加菜单[MenuItem("Tools/MyOption")]private static void MyOption(){ // 自定义菜单Tools}[MenuItem("Tools/Sub/MyOption")]private static void MyOption(){ // 子菜单}[MenuItem("Window/AAAOption")]private原创 2017-12-19 15:31:29 · 1939 阅读 · 0 评论 -
「Unity3D」(1)自定义Inspector绘制默认Script
这是一个关于强迫症的故事。Unity中如果没有自定义脚本的Inspector,就会默认绘制出一个,不可编辑的脚本对应选取框。这有什么好处呢 ?鼠标点击的时候,能够在Project试图里定位脚本所在的文件夹和位置。当然如果没有,也可以鼠标右键进行Editor Script。如果我们override了OnInspectorGUI函数,除非调用base.OnInspectorGUI父类的方法,否则是不会绘原创 2017-10-24 11:17:09 · 1812 阅读 · 2 评论 -
Unity3D ugui摄像机AABB动态剔除不可见UI
UI 相机的可见区域之外,虽然会被显卡绘制剪裁掉,但是会消耗drawcall。我们可以利用AABB碰撞检测剔除掉,相机之外的ui元素,就是active false掉。效果如下: this.planes = GeometryUtility.CalculateFrustumPlanes(th原创 2016-07-21 17:12:40 · 3482 阅读 · 1 评论 -
Unity3D 协程管理器和协程回调函数
unity中使用协程的时候,会经常遇到两个问题。绑定在GameObject上的协程,会因为Active false而终止运行。当使用一个协程的时候,如果注册一个通过的回调函数,来处理结果,并且可以拿到协程返回的值。 第一个问题,可以使用一个协程管理器。挂在独立的GameObject上,不会受到操作的GameObject的active状态影响。原创 2016-07-21 14:59:13 · 5056 阅读 · 0 评论 -
Unity3D 录音, 压缩, 保存, 读取, 实时检测音量
unity 录音功能主要通过,Microphone这个类来完成。使用这个类自然可以跨平台,不用调用平台本地代码处理。 private static AudioClip clip; private static int maxRecordTime = 10; private static int samplingRate = 12000; public sta原创 2016-05-12 18:06:50 · 17668 阅读 · 9 评论 -
Unity3D ugui和模型粒子的层级管理
直接看代码简单明了: public class UIDepth : MonoBehaviour { public int order; public bool isUI = true; void Start() { if (isUI) { Canvas canvas = this.GetComponent(); if( c原创 2016-03-19 16:06:55 · 6137 阅读 · 0 评论 -
Unity3D shader 实现圆角矩形和圆形区域
可以使用Marc Edwards的超椭圆方程,直接计算出圆角矩形和圆形的像素区域,并且可以使用参数调节形状的区域。 x,y 是坐标,5是弧度的程度越大越接近矩形,60是半径系数,shader中需要归一化转换。 利用此公式实现shader如下: Shader "Custom/Vignette" { Properties { _fade ("Opac原创 2016-03-18 16:07:14 · 8370 阅读 · 3 评论 -
Unity3D 指引遮罩
指引遮罩层的作用,主要是屏蔽事件,指定区域穿透事件。在视觉上,遮挡是非遮挡区域有不同的颜色表示。我们分别从事件功能,和视觉功能上来分别介绍。事件功能需要脚本,视觉功能需要shader辅助。 首先,事件功能上,我们建立四个遮挡层,每个层都会阻挡事件。让后利用4块遮挡层,去围成一个矩形区域形成可点击区域。我们生成一个prefab,里面包含4个屏蔽层。动态的去计算4个屏蔽层的位置。原创 2016-03-18 14:45:51 · 2079 阅读 · 0 评论