Unity 开发基础
Unity开发基础
CoderZ1010
这个作者很懒,什么都没留下…
展开
-
Unity FBX Animation Import Settings中的Curves动画曲线是如何在Animator中起作用的
fbx动画文件的导入设置中的Animation窗口中,可以在Curves下添加动画曲线,可以用于IK权重的取值。原创 2023-04-18 10:51:21 · 867 阅读 · 0 评论 -
Unity PlayerPrefs数据持久化 拓展
PlayerPrefs 是用于本地持久化保存与读取的类,以键值对的形式将数据进行保存,它支持三种数据类型的保存和读取: int、float、string,以下为对PlayerPrefs的进一步封装,使其支持更多的数据类型。using System;using UnityEngine;namespace SK.Framework{ /// <summary> /// 本地数据持久化 /// </summary> public static原创 2021-02-24 16:47:45 · 749 阅读 · 0 评论 -
Unity【Timeline】- 使用Signal Track添加事件
使用Timeline时间轴播放动画时,可以使用Signal Track在指定的时间点添加事件,例如界面的显示隐藏、物体的切换等等。原创 2022-04-02 13:45:55 · 4554 阅读 · 1 评论 -
Unity【RaycastHit】- 关于射线投射碰撞信息中normal法线向量的运用
当我们使用射线投射检测到碰撞时,可以从RaycastHit中获取射线投射返回的信息,其中normal变量表示碰撞物体表面的法线向量:using UnityEngine;public class Example : MonoBehaviour{ private void Update() { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); bool flag =...原创 2022-03-05 13:15:05 · 5821 阅读 · 0 评论 -
Unity【Lerp & Slerp】- 线性插值与球形插值的区别
在Unity的向量Vector和四元数Quaternion类中,均包含线性插值Lerp和球形插值Slerp的函数,那么两者之间有何区别,通过下面的例子进行观察:图一中黄色线与红色线相交的点是从点A到点B进行线性插值得出的结果,图二则是球形插值得出的结果,或许称之为弧形插值更容易理解。二者的区别从图中可以明显看出,从四元数的角度来看,线性插值每帧得出的旋转结果是不均匀的,从代数的角度思考,如果两个单位四元数之间进行插值,如图一中的线性插值,得到的四元数并不是单位...原创 2022-03-05 08:51:45 · 4985 阅读 · 0 评论 -
Unity Mathf【Deg & Rad】- 关于数学运算中的度与弧度
Mathf中的三角函数是我们常用的数学运算函数,在使用过程中需要注意参数的单位,以Sin正弦函数为例,我们都知道30度角的正弦函数结果为0.5,那么当我们调用Mathf.Sin函数时,假如我们传入30,则可以发现其结果并不是0.5:Debug.Log($"Mathf.Sin(30) => {Mathf.Sin(30f)}");原因是其参数并不是以Degree度为单位,而是以Radians弧度为单位:// 摘要:// Returns the sine...原创 2022-03-04 10:30:25 · 4487 阅读 · 0 评论 -
Unity 【Content Size Fitter】- 聊天气泡自动适配Text文本框大小
通常在展示人物对话的时候文本的长度是不定的,因此会需要动态的调整对话内容文本框的背景图片的大小,这里以如下这种气泡框的对话为例:实现该需求涉及到的内容包括Content Size Fitter组件的使用、2D Sprite工具包的使用。Content Size Fitter组件用于Text文本框,如图所示,我们将Horzontal Fit设为Preferred Size,当我们调整Text文本框中的内容时,其大小会自动进行调整。注意Rect Transform中Pivot轴心点的设置原创 2022-02-25 18:19:43 · 5777 阅读 · 0 评论 -
Unity NavMesh & LineRenderer AI寻路及导航路径的绘制
Nav Mesh是Unity中用于寻路行为的AI功能,下面简单介绍Nav Mesh的使用以及如何使用Line Renderer组件将寻路的路径通过如下方式绘制出来:首先需要将场景中属于寻路过程中的障碍物体做Navigation Static处理,在Inspector检视面板右上角的Static中:然后打开Navigation窗口进行烘焙,在Window/AI菜单中:点击Bake烘焙,在Scene场景窗口中进行预览,其中蓝色的区域即是寻路时可以行走的区域...原创 2022-02-22 10:55:45 · 6180 阅读 · 15 评论 -
Unity Button中Transition的四种类型
Button组件中的Transition属性用于设置用户交互的响应方式,包含四种类型:1.None2.Color Tint3.Sprite Swap4.Animation1.None将Transition设为None类型时,用户与Button的交互不会有任何响应,因此一般不会用到,如图所示,鼠标进入、按下按钮时没有任何反应,当然按钮绑定的监听事件是会执行的。2. Color Tint...原创 2022-02-21 16:25:30 · 3837 阅读 · 0 评论 -
Unity ScrollRect & Layout Group & Content Size Fitter & Mask 使用滑动列表的几项要点
当需要在较小的区域中显示大量的内容时,需要用到Scroll Rect组件,该组件提供了滚动此内容的功能。通常情况下,Scroll Rect组件经常与Layout Group、Content Size Fitter及Mask组件配合使用。1.Scroll RectContent:需要滑动的内容Horizontal:是否启用水平滑动Vertical:是否启用垂直滑动Movement Type:包含三种类型 1.Unrestricted不受限制的;2.Clamped可以...原创 2022-02-20 10:34:00 · 2547 阅读 · 4 评论 -
Unity 小技巧 - 指定拖拽赋值
假设有脚本A、B,均继承自MonoBehaviour,那么它们可以以组件的形式挂载于物体上,现在将它们分别挂在物体GameObjectA和GameObjectB上:在B脚本中声明一个A变量,以public修饰符修饰,那么在B的Inspector面板上即可将挂载A组件的GameObjectA物体拖拽赋值:using UnityEngine;public class B : MonoBehaviour{ public A a;}...原创 2021-12-25 13:29:58 · 2943 阅读 · 3 评论 -
Unity 灯光显示、数量上限问题
场景中如果放置过多的灯光会导致显示异常,如图所示,我们在场景中添加了10个Point Light点光源,可以发现正常显示的只有几个: 且随着视角的移动,起作用的灯光会发生变化:解决方法:1. 如果使用Built-In内置渲染管线,在Edit / Project Settings / Quality中修改Pixel Light Count的数量: 场景中我们放了10个点光源,我们将其改为10再看一下效果,可以发现灯光显示已...原创 2021-12-25 12:01:43 · 10440 阅读 · 12 评论 -
Unity中的Q、W、E、R
Unity中的Q、W、E、R快捷键用于切换不同的工具,它们分别对应HandTool、MoveTool、RotateTool、ScaleTool: 1.HandTool 用于拖动场景中的视野,如下,选中HandTool工具时在Scene场景中拖动鼠标: 2.MoveTool 用于选中、移动场景中的物体 3.RotateTool 用于旋转物体的角度 4.ScaleTool 用于缩放物体的大小欢迎...原创 2021-10-09 14:50:02 · 1460 阅读 · 0 评论 -
Unity Tag标签
物体设置tag标签,也可以理解为标记物体,用以区分物体,例如场景中的默认相机的标签默认为MainCamera,在脚本中我们可以通过Camera.main来获取场景中标签为MainCamera的相机。 除了默认的标签外,可以通过Add Tag添加自定义标签: 我们自定义了一个标签Test,新建一个物体将其标签设为Test: 在脚本中通过标签查找该物体需要用到GameObject类中的FindGameObjectWithTa...原创 2021-09-23 15:56:34 · 5764 阅读 · 0 评论 -
Unity UI层级/遮挡顺序
在Unity的Hierarchy层级面板中,层级在下的会遮挡住层级在上的UI视图,如下图所示,有三个Image物体Red、Yellow、Blue 层级从上到下,在Scene窗口中可以看见蓝色在最上层,会遮挡住黄色和红色、黄色在中间层,被蓝色遮挡但会遮挡红色,红色在最下层。 若想在程序运行过程中动态调整层级顺序,则需要用到Transfrom类中的函数SetSiblingIndex、SetAsFirstSibling、SetAsLastSibling: ...原创 2021-09-23 14:23:50 · 14234 阅读 · 3 评论 -
Unity 创建/实例化对象
在程序运行过程中创建、实例化对象物体需要用到Object类中的 Instantiate 函数,例如,我们场景中有一个物体A: 现在我们想要在场景中创建五个该物体,则用Instantiate函数将该物体作为参数传入:using UnityEngine;public class Foo : MonoBehaviour{ public GameObject A; private void Start() { for (in...原创 2021-09-23 11:48:04 · 7427 阅读 · 1 评论 -
Unity 激活、取消激活脚本组件
在Unity编辑器中激活、取消激活某个脚本组件只需要在Inspector检视面板中将该脚本组件前的开关勾选、取消勾选即可。 在程序运行过程中激活、取消激活某个脚本组件则需要用到Behaviour类中的enabled属性: 假如我们想取消激活某个脚本组件就将该属性设为false,如下例:private void Start(){ //取消激活该组件 this.enabled = false;} 欢迎关注本...原创 2021-09-23 11:25:23 · 7004 阅读 · 0 评论 -
Unity 显示、隐藏物体
物体的显示与隐藏非常简单,在开发过程中直接选中要显示或隐藏的物体,在Inspector检视面板中勾选或取消勾选物体名称前的开关即可实现物体的显示与隐藏。 在程序运行过程中用代码显示、隐藏物体则需要用到GameObject类中的SetActive函数:参数为bool类型,传入true表示显示物体,传入false表示隐藏物体,如下例:private void Start(){ //隐藏物体 gameObject.SetAc...原创 2021-09-23 11:08:35 · 10135 阅读 · 1 评论