
Unity
文章平均质量分 58
火雨z
https://github.com/SolarianZ
展开
-
【Unity | Editor强化工具】项目备忘录工具
介绍一个在Unity Editor内分享项目备忘录的小工具。原创 2024-06-20 20:52:44 · 751 阅读 · 0 评论 -
【Unity | Editor强化工具】资产快速访问工具
介绍一个用于Unity引擎的可以在独立窗口中列举常用资产的小工具,Favorite的强化版。原创 2024-06-04 22:35:46 · 665 阅读 · 0 评论 -
【Unity】2D物理事件表
Unity 2D物理事件表。原创 2024-02-23 13:02:03 · 439 阅读 · 0 评论 -
【Unity】简要讲解何时、何处以及为何要使用 BurstCompile 特性
简要讲解何时、何处以及为何要使用 BurstCompile 特性。翻译 2023-06-26 11:53:24 · 2723 阅读 · 0 评论 -
【Unity】在Editor主工具栏中添加自定义UI
在Unity Editor主工具栏中添加自定义UI。原创 2023-06-15 20:08:04 · 1012 阅读 · 0 评论 -
【Unity】Playable使用细则
本文介绍官方文档中没提及的Playable使用限制、注意事项、Bug及规避方案,不是Playable的入门教程!原创 2023-05-28 22:14:17 · 2491 阅读 · 3 评论 -
【Unity】Animation Playable Bug、限制及解决方案汇总
【Unity】Animation Playable Bug、限制及解决方案汇总原创 2023-05-22 22:32:56 · 1802 阅读 · 5 评论 -
【Unity】读写ProjectSettings、UserSettings、Library文件夹中的文件
【Unity】读写ProjectSettings、UserSettings、Library文件夹中的文件。原创 2023-05-13 21:26:31 · 2081 阅读 · 0 评论 -
【Unity】动态生成圆环体Mesh
【Unity】动态生成圆环体Mesh。代码由ChatGPT生成,后经人工调整。原创 2023-03-29 11:56:26 · 1400 阅读 · 0 评论 -
【Unity】解决IL2CPP打包报错Building xxx\ei6vj\wncp_y_vm6.lump.obj failed with output: qtky_vm6.lump.cpp
解决IL2CPP打包Windows exe时报错 Building Library\Bee\artifacts\WinPlayerBuildProgram\ei6vj\wncp_y_vm6.lump.obj failed with output: qtky_vm6.lump.cpp 。翻译 2023-02-17 13:59:40 · 2315 阅读 · 5 评论 -
【Unity|备忘】重新加载托管程序集对EditorWindow字段的影响
【Unity|备忘】重新加载托管程序集对EditorWindow字段的影响原创 2023-02-08 18:34:54 · 699 阅读 · 0 评论 -
【Unity】动画图插件的开发总结
动画图插件的目标、实现思路、开发过程中遇到的一些问题以及开发后的结论,作为备忘。原创 2023-01-30 12:07:46 · 1125 阅读 · 1 评论 -
【Unity|备忘】在脚本中动态设置ParentConstraint
【Unity|备忘】在脚本中动态设置ParentConstraint。功能本身很简单,就是计算初始的 `Position offset` 和 `Rotation offset` 时需要注意一下坐标系。原创 2022-09-30 10:15:56 · 1711 阅读 · 1 评论 -
【Unity】为GraphView中的Edge添加数据流效果
Unity的Shader Graph和Visual Effect Graph的连图效果,都是通过 GraphView 实现的,但GraphView中默认的Edge并不带有数据流效果,这里提供了一个简单的带数据流效果的Edge实现。原创 2022-08-23 18:38:35 · 1731 阅读 · 2 评论 -
【Unity】PlayableGraph监控工具
PlayableGraph Monitor支持Unity 2019.4或更新版本,基本涵盖了Graph Visualizer的现有功能,额外增加了视图拖拽、视图缩放、端口信息等功能。可以通过 OpenUPM 安装,也可以直接通过 Github 安装。原创 2022-08-21 19:29:47 · 1620 阅读 · 0 评论 -
【Unity】保存PlayMode中对组件所作的修改
【Unity】保存PlayMode中对组件所作的修改利用闭包+反射,可以比较简单地实现将PlayMode中对组件所做的大部分修改保留到EditMode。主要过程 :记录需要保存的PlayMode组件;监听Editor从PlayMode变为EditMode事件;在上一步的监听方法中,找到已记录的PlayMode组件所对应的EditMode组件,利用反射将所有符合条件的字段和属性的值从前者复制到后者。使用限制 :字段必须可序列化(访问权限为 public 或带有特性 SerializeFie原创 2022-05-19 14:37:55 · 1607 阅读 · 0 评论 -
【Unity】为EditorWindow添加自定义的Toolbar按钮
【Unity】为EditorWindow添加自定义的Toolbar按钮Unity提供了一个签名为 void ShowButton(Rect position) 的消息方法,用于在自定义Editor窗口的工具栏中添加自定义内容。以下示例展示了如何在窗口的右上角添加一个问号按钮,并在点击按钮时打开Unity的用户手册网站。public class MyWindow : UnityEditor.EditorWindow{ private GUIStyle _toolbarButtonStyle;原创 2022-05-19 14:35:59 · 2097 阅读 · 0 评论 -
【Unity】移动类型位置时保持兼容已有序列化数据
【Unity】移动类型位置时保持兼容已有序列化数据Unity中,若修改了类型的名称、命名空间或所在的程序集,会导致已有的序列化数据(SerializeField、SerializeReference)无法解析,此时可以为类型添加 MovedFromAttribute 特性来告知Unity如何保持数据兼容性,并且可以指定是否要将已有的序列化数据更新为新类型的序列化数据。namespace UnityEngine.Scripting.APIUpdating{ [AttributeUsage(Att原创 2022-05-19 14:33:38 · 693 阅读 · 0 评论 -
【Unity】用于BlendShape的LookAt效果控制器
【Unity】用于BlendShape的LookAt效果控制器为了控制游戏中角色眼球的朝向,通常会使用 LookAtIK 。但LookAtIK需要有眼球骨骼,如果动画师使用BlendShape制作了面部表情,可能会省略掉眼球骨骼。当然,更多的情况是,动画师为角色单独制作了一个高精度的带BlendShape的面部模型,这时,即使角色主体带有眼球骨骼,也无法直接控制到这个独立的面部模型。解决上述问题的关键点是为眼球分配一个骨骼,并将LookAtIK的计算结果换算成BlendShape权重。如果角色不带有眼球原创 2021-10-26 10:16:10 · 2752 阅读 · 0 评论 -
【Unity】用于Humanoid骨骼的扭曲矫正组件
【Unity】用于Humanoid骨骼的扭曲矫正组件组件已知限制:可以在一定旋转范围内消除变形,不能无限度的消除变形;不支持连续的两个扭曲矫正骨骼,如果需要,可以自行调整代码。在Unity中,为了使用骨骼重定向复用动画,需要在模型导入设置中把AnimationType位置为Hunamoid。Humanoid骨骼本身带有一定的限制,比如只支持有限的几个骨骼节点。骨骼节点过少会导致Animator在播放某些动作时模型发生过度扭曲,为了解决这些问题,通常会增加骨骼数量,来执行扭曲矫正。但在使用原创 2021-10-21 22:35:26 · 5678 阅读 · 0 评论 -
【Unity】用于Unity Editor的本地配置管理器
【Unity】用于Unity Editor的本地配置管理器之前一直在使用 EditorPrefs 存储编辑器扩展数据等本地配置,但这种方式会向注册表中写入大量数据,查看和清理的时候都不方便,所以我不太喜欢这种方式。没有使用 ScriptableObject 来保存配置是因为它生成的配置文件要放到 Assets 文件夹中,每次生成这种配置文件,都要在版本控制系统中添加忽略项,容易被遗忘,导致本地设置扩散到整个团队。后来在浏览项目工程时,发现工程目录中多了个 UserSettings 文件夹,论坛上查了下,原创 2021-07-31 22:57:44 · 935 阅读 · 0 评论 -
【Unity】带有字符淡入效果的TextMeshPro打字机效果组件
【Unity】带有字符淡入效果的TextMeshPro打字机效果组件在TextMeshPro中,可以通过 TMP_Text.maxVisibleCharacters 属性控制可见字符的个数,实现简单的打字机效果。如果要为打字机效果增加字符淡入效果,可以通过调整字符Mesh的顶点颜色来实现。下面的代码实现了一个基础的带有字符淡入效果的TextMeshPro打字机效果组件,主要实现步骤已在代码注释中进行了说明。已知问题:FadeRange大于0时,会强制将可见字符的透明度设为完全不透明。要修复此问.原创 2021-07-27 23:07:03 · 5942 阅读 · 15 评论 -
【Unity】使用RootMotion跟运动驱动NavMeshAgent导航
【Unity】NavMeshAgent与Animator及RootMotion的配合Unity目前(2019.4)还没有内置开箱即用的将导航与动画整合的方案,这里提供了一个将NavMeshAgent和Animator整合的思路,并且兼容了RootMotion。实现NavMeshAgent和Animator整合时,主要需要解决滑步问题和NavMeshAgent与RootMotion的数据同步问题,在不同的使用情境下,这两个问题有不同的解决方案。如果是不带RootMotion的角色,需要避免角色滑步,将角原创 2021-07-21 21:35:44 · 3806 阅读 · 6 评论 -
【Unity】使Cinemachine立即完成Damp、当前Blend和即将发生的Blend
【Unity】使Cinemachine立即完成Damp、当前Blend和即将发生的Blend和Damp游戏中很多时候都会动态生成玩家角色,这时会希望相机立即定位到刚刚生成的玩家角色,不要有从远处将镜头Blend过来或者Damp的过程,但Cinemachine直到2.8.0版本都没有提供立即完成Blend的方法。这里对Cinemachine的源码做了些微小的改动,使其能够立即完成Damp、当前Blend和即将发生的Blend。目前版本的Cinemachine已经含有使相机立即完成Damp的功能,只需要将原创 2021-07-16 09:57:52 · 1728 阅读 · 12 评论 -
【Unity】由Unity资源的相对路径获取资源的AssetDatabase路径
/// <summary>/// 由Unity资源的相对路径获取资源的AssetDatabase路径。/// </summary>/// <param name="assetRelativePath">Unity资源文件的相对路径。</param>/// <param name="callerFilePath">请勿传入此参数。</param>/// <returns></returns>public原创 2021-05-23 18:58:12 · 2893 阅读 · 0 评论 -
【Unity - UGUI】UI跟随GameObject(将世界空间坐标映射到UI屏幕空间)
在UGUI中使UI跟随Scene中的GameObject移动,可以用于处理角色的血条等头顶状态UI跟随角色移动,代码如下:原创 2021-05-13 09:46:05 · 1811 阅读 · 5 评论 -
【Unity】Device Simulator中的Application.isEditor
在正常情况下,Unity Editor中 Application.isEditor 会返回 true ,但是在Device Simulator模式下, Application.isEditor 会返回 false ,这时可以用 Application.installMode == ApplicationInstallMode.Editor 来判断程序是否运行在Unity Editor中,或者也可以更简单粗暴地使用 UNITY_EDITOR 宏来判断程序是否运行在Unity Editor中。...原创 2021-05-12 22:23:10 · 1073 阅读 · 0 评论 -
【Unity】在Hierarchy中绘制自定义的标记图标
草稿[InitializeOnLoad]public static class HierarchyObjectIconDrawer{ static HierarchyObjectIconDrawer() { EditorApplication.hierarchyWindowItemOnGUI += OnHierarchyWindowItemGUI; } static void OnHierarchyWindowItemGUI(int instanceI原创 2021-05-12 21:48:07 · 1388 阅读 · 0 评论 -
【Unity】Unity Editor中使输入框失去焦点
【Unity】Unity Editor中使输入框失去焦点Unity自定义编辑器窗口时,如果想让当前正在输入文本的输入框失去焦点,必须把焦点移动到另一个输入控件。如果用代码使当前输入框失去焦点的话,很简单,就一行代码:GUIUtility.keyboardControl = 0;...原创 2020-11-22 11:21:50 · 2428 阅读 · 0 评论 -
【Unity】由预制体实例获取预制体资源及预制体资源路径
【Unity】由预制体实例获取预制体资源及预制体资源路径Unity中一个预制体对象可能处于3种状态:位于Project中,是PrefabAsset;位于Scene中,是PrefabInstance;位于PrefabMode Scene中,既不是PrefabAsset也不是Prefab Instance。下面的方法给出了获取不同状态的预制体对象所对应的预制体资源及其资源路径的方式。/// <summary>/// 获取预制体资源路径。/// </summary>/原创 2020-10-19 22:32:31 · 12074 阅读 · 2 评论 -
【Unity】判断对象是否在预览场景(Prefab Mode中用于编辑Prefab的场景)中
【Unity】判断对象是否在预览场景(Prefab Mode中用于编辑Prefab的场景)中如果对象在预览场景(Prefab Mode中用于编辑Prefab的场景)中,下面的方法会返回 true ;如果对象位于常规场景或者Project窗口中,下面的方法会返回 false 。UnityEditor.SceneManagement.EditorSceneManager.IsPreviewSceneObject(Object obj);还有另一种方法,就是获取当前的Prefab编辑状态。如果能获取到原创 2020-09-23 17:21:21 · 3905 阅读 · 3 评论 -
【Unity】旋转Vector3和Quaternion
【Unity】旋转Vector3和Quaternion旋转Vector3计算一个Vector3绕指定轴旋转指定角度后所得到的向量。/// <summary>/// 计算一个Vector3绕指定轴旋转指定角度后所得到的向量。/// </summary>/// <param name="source">旋转前的源Vector3</param>/// <param name="axis">旋转轴</param>/// <原创 2020-09-19 17:09:30 · 6603 阅读 · 5 评论 -
【Unity】在Scene窗口中发射射线
【Unity】在Scene窗口中发射射线Handles 类中有很多用于在Scene中绘制形状的方法,HandleUtility 类中有很多处理Editor事件的方法,二者结合可以做出许多非常有用的编辑器扩展工具。例如,可以实现在Scene窗口中做射线检测。在自定义脚本扩展中实现Scene射线using UnityEngine;using UnityEditor;// 自定义脚本扩展中实现Scene射线[CustomEditor(typeof(MyScript))]public class C原创 2020-09-19 17:07:43 · 2217 阅读 · 0 评论 -
【Unity】设置Scene窗口点选对象时的默认选中节点
【Unity】设置Scene窗口点选对象时的默认选中节点实现任意一个继承自 MonoBehaviour 的类,然后为该类添加 SelectionBaseAttribute 特性,将该脚本附加到GameObject实例上后,当在Scene窗口中点选该GameObject的子GameObject时,Hierarchy中会自动选中该GameObject。如果被直接点选中的GameObject的上层GameObject中有多个GameObject有带有SelectionBase标记,则Hierarchy会选择最原创 2020-09-19 17:06:14 · 1324 阅读 · 0 评论 -
【Unity】Unity Gizmos扩展(圆弧、扇形、圆形)
Unity Gizmos扩展(圆弧、扇形、圆形)使用 UnityEditor.Handles 为Unity Gizmos 实现的扩展:DrawWireArc() :画圆弧线DrawSolidArc() :画扇形DrawWireDisc() :画空心圆DrawSolidDisc() :画实心圆// GizmosExtension.csnamespace UnityEngine{ /// <summary> /// Gizmos Extensions.原创 2020-09-04 09:58:54 · 5559 阅读 · 0 评论 -
【Unity】判断对象是否是预制体以及是否存储在磁盘中
【Unity】判断资源是否是预制体以下方法需要Unity 2018.3.0f1及更高版本。对于低版本的Unity Editor,可以通过 gameObject.scene.IsValid() 来判断对象是预制体资源还是预制体实例。判断Object是否是预制体资源/// <summary>/// 判断Object是否是预制体资源。/// 如果是则返回 `true` ,如果不是则返回 `false` 。/// </summary>/// <param name=原创 2020-06-29 19:24:22 · 5765 阅读 · 0 评论 -
【Unity】使用Verdaccio为Unity Package Manager搭建私有npm包服务器
使用Verdaccio为Unity Package Manager搭建私有npm包服务器这里只挖了个坑,还没填完。因为遇到了Unity的问题(可能和Unity版本有关),问题解决了才能完成这篇文章,解决不了就凉凉。具体问题请看:Failed to resolve packages: Registry configuration is invalid如果急着自建私服,可以参照这两个文档做:Verdaccio DocumentsUnity Mannual: Scoped package reg原创 2020-06-07 11:26:47 · 4308 阅读 · 6 评论 -
【Unity】Unity Editor禁止通过键盘删除GameObject
Unity Editor禁止通过键盘删除GameObject如果希望某类GameObject不可以通过键盘的Delete键进行删除,可以为该类型实现一个自定义的编辑器扩展类,并使该扩展类继承下面的 InterceptKeyboardDeleteEditor 类。InterceptKeyboardDeleteEditor 类的作用原理是,在脚本被激活时每帧检测Unity Editor的 Event ,如果当前的 Event 对应了Delete键事件,则将其标记为 Used ,这样Unity Editor便原创 2020-05-27 13:54:20 · 2171 阅读 · 4 评论 -
解决Unreal Engine 4在编译工程时重复生成未修改过的代码的问题
解决Unreal Engine 4在编译工程时重复生成未修改过的代码的问题在Unreal Engine 4.24.3 中未现此问题,应该已经得到修复。在引擎的安装目录中找到文件 Engine\Binaries\Win64\UnrealHeaderTool.target ,在该文件的第2行 追加一个空格 然后保存该文件,即可解决问题。回到Unread Engine重新编译工程后,即使再删除追加的空格,问题也不会重现。...原创 2020-05-10 21:06:28 · 2098 阅读 · 1 评论 -
【Unity】在Inspector上显示自定义的位掩码枚举(Flags)
【Unity】在Inspector上显示自定义的位掩码枚举(Flags)前面啰嗦了踩坑过程,想看源码直接拉到最后。。。以 IMGUI 实现,版本原因,没有查看 UIElements 。Unity编辑器默认并不支持将 Flags 枚举以位掩码形式显示在Inspector上,像Layers这些控件,并不通用。想让所有带有 Flags 特性的枚举都能支持多选,就要自定义编辑器扩展。然后,坑就...原创 2020-04-18 10:39:12 · 3886 阅读 · 2 评论