ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-02-05 14:59:26  阅读:300  来源: 互联网

标签:滚动 contentPosition ScrollRect 滚动条 摇杆 Unity 视口 矩形


效果

在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

摇杆脚本

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 TypeUnrestricted、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 类型动态参数发送。

标签:滚动,contentPosition,ScrollRect,滚动条,摇杆,Unity,视口,矩形
来源: https://blog.csdn.net/weixin_43526371/article/details/122790326

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有