0
点赞
收藏
分享

微信扫一扫

Unity(二十七):ScrollRect组件 - 制作游戏摇杆


效果

Unity(二十七):ScrollRect组件 - 制作游戏摇杆_elastic

布局(​​由图一实现至图三的过程​​)

Unity(二十七):ScrollRect组件 - 制作游戏摇杆_elastic_02


Unity(二十七):ScrollRect组件 - 制作游戏摇杆_unity_03


Unity(二十七):ScrollRect组件 - 制作游戏摇杆_游戏引擎_04

摇杆脚本

using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;

public class GamePad : ScrollRect
{
protected float radius = 0f;

protected override void Start()
{
base.Start();
// 计算摇杆半径
radius = gameObject.GetComponent<RectTransform>().sizeDelta.x / 2f;
}

public override void OnDrag(PointerEventData eventData)
{
base.OnDrag(eventData);

var contentPosition = this.content.anchoredPosition;
// 大于半径时固定摇杆旋钮的位置
if (contentPosition.magnitude > radius)
{
contentPosition = contentPosition.normalized * radius;
SetContentAnchoredPosition(contentPosition);
}
Debug.Log(contentPosition);
}
}

ScrollRect上的属性和事件

属性

描述

Content

这是对需要滚动的 UI 元素(例如大型图像)的矩形变换的引用。

Horizontal

启用水平滚动

Vertical

启用垂直滚动

Movement Type

Unrestricted、Elastic 或 Clamped。使用 Elastic 或 Clamped 可强制内容保持在滚动矩形的边界内。Elastic 模式在内容到达滚动矩形边缘时弹回内容

​Elasticity​

这是弹性模式中使用的反弹量。

Inertia

如果设置 Inertia,则拖动指针再松开时内容将继续移动。如果未设置 Inertia,则只有进行拖动时内容才移动。

​Deceleration Rate​

设置 Inertia 的情况下,减速率 (Deceleration Rate) 决定了内容停止移动的速度。速率为 0 将立即停止移动。值为 1 表示移动永不减速。

Scroll Sensitivity

对滚轮和触控板滚动事件的敏感性。

Viewport

对作为内容矩形变换父项的视口矩形变换的引用。

Horizontal Scrollbar

对水平滚动条元素的引用(可选)。

​Visibility​

滚动条是否应在不需要时自动隐藏以及(可选)是否还展开视口。

​Spacing​

滚动条与视口之间的空间。

Vertical Scrollbar

对垂直滚动条元素的引用(可选)。

​Visibility​

滚动条是否应在不需要时自动隐藏以及(可选)是否还展开视口。

​Spacing​

滚动条与视口之间的空间。

事件

描述

On Value Changed

滚动矩形的滚动位置发生变化时调用的 UnityEvent。该事件可将当前滚动位置作为 Vector2 类型动态参数发送。


举报

相关推荐

0 条评论