语录:
只有经历地狱般的磨练,才能炼出创造天堂的力量。
前言:
滑块是一个非常简单的控件,它允许通过沿有限的驱动轴滑动 Interactable 来选择不同的值。我们将使用线性驱动器创建一个滑块控件,该控件允许我们根据与滑块上的位置关联的特定值更改游戏对象的颜色。
正文:
步骤一:
新建一个空物体,并将其重新命名,用来放置我们的滑块:
步骤二:
新建一个Cube,修改它的基本属性并将其重新命名,然后将碰撞器关闭,最后将Cube复制5个,修改其位置:
步骤三:
在Slider下面新建我们的滑块游戏对象:
Tilia -> Prefabs -> Interactions -> Controllables -> PhysicsJoint -> Interactions.LinearJointDrive
然后查找到自带的Cube将其大小调整为0.1:
然后设置Interactions.LinearJointDrive的基本属性:
步骤四:
新建一个球的游戏对性,并修改它的位置以及大小:
步骤五:
我们需要写一个脚本,用来允许滑块位于特定位置时更改游戏对象的颜色:
using UnityEngine;
public class ColorChooser : MonoBehaviour
{
public MeshRenderer target;
public Color[] colors = new Color[0];
public void SetColor(float index)
{
if (index < 0 || index >= colors.Length)
{
return;
}
target.material.color = colors[(int)index];
}
}
步骤六:
将我们写好的脚本拖放到新建的球上面,并将属性值设置为组件上的属性值,然后为每个颜色元素指定三种不同的颜色选择:
步骤七:
将我们的球游戏对象拖放到Interactions.LinearJointDrive的组件实践监听器上,并设置其参数:
运行Unity场景并抓住滑块立方体,然后尝试在线性轴上上下滑动它。您会注意到,立方体无法滑过驱动器的限制,当您通过某些阶梯凹口时,游戏对象将改变颜色。但是,当您释放滑块立方体时,您会注意到滑块会捕捉回原始位置,并且不会捕捉到最近的步长凹槽。
步骤八:
我们可以通过简单地在驱动器的内部 Interactable 上添加一个事件来更新 以匹配我们所处的当前步长值,这样当滑块最终被取消抓取时,我们可以将驱动器设置为当前步长值:
运行Unity 场景并抓住并注意访问每个缺口时颜色的变化。您还将看到,当您释放时,它将自动捕捉到最近的阶梯凹口。