您的位置:首页 > 新闻 > 会展 > 网页设计的培训机构_门户网站建设和运行招标公告_seo怎么做优化计划_google国际版入口

网页设计的培训机构_门户网站建设和运行招标公告_seo怎么做优化计划_google国际版入口

2025/3/13 13:58:38 来源:https://blog.csdn.net/li1214661543/article/details/146147758  浏览:    关键词:网页设计的培训机构_门户网站建设和运行招标公告_seo怎么做优化计划_google国际版入口
网页设计的培训机构_门户网站建设和运行招标公告_seo怎么做优化计划_google国际版入口

如图所示,可以随意增加数量,半径,起始角度和终止角度等。

代码使用Dotween,如有报错,还请检查是否引入了该组件

代码如下:

using UnityEngine;
using DG.Tweening;public class CircularMenuController : MonoBehaviour
{[Header("菜单配置")][Tooltip("子物体数量,即段数")]public int segments = 6;[Tooltip("子物体移动的半径")]public float radius = 100f;[Tooltip("子物体分布的起始角度")]public float startAngle = 0f;[Tooltip("子物体分布的终止角度")]public float endAngle = 359f;[Header("动画配置")][Tooltip("动画持续时间")]public float duration = 0.5f;[Tooltip("打开状态的缓动类型")]public Ease openEase = Ease.OutBack;[Tooltip("关闭状态的缓动类型")]public Ease closeEase = Ease.InBack;public bool isOpen = false;private Transform[] childTransforms;void Start(){// 获取所有子物体的Transform组件childTransforms = new Transform[segments];for (int i = 0; i < segments; i++){if (i < transform.childCount){childTransforms[i] = transform.GetChild(i);}else{// 如果子物体数量不足,则创建新的空物体作为占位符GameObject placeholder = new GameObject("Placeholder " + i);placeholder.transform.SetParent(transform);placeholder.transform.localPosition = Vector3.zero;childTransforms[i] = placeholder.transform;}}}void Update(){if (Input.GetKeyDown(KeyCode.Space)){ToggleMenu();}}/// <summary>/// 切换菜单状态:打开或关闭/// </summary>public void ToggleMenu(){if (isOpen){CloseMenu();}else{OpenMenu();}}/// <summary>/// 打开菜单:子物体从中心移动到圆周边缘/// </summary>public void OpenMenu(){float angleStep = (endAngle - startAngle) / segments;for (int i = 0; i < segments; i++){float angle = startAngle + angleStep * i;float rad = angle * Mathf.Deg2Rad;Vector2 targetPos = new Vector2(Mathf.Cos(rad) * radius, Mathf.Sin(rad) * radius);childTransforms[i].DOLocalMove(targetPos, duration).SetEase(openEase);}isOpen = true;}/// <summary>/// 关闭菜单:子物体从圆周边缘移动回中心/// </summary>public void CloseMenu(){for (int i = 0; i < segments; i++){childTransforms[i].DOLocalMove(Vector2.zero, duration).SetEase(closeEase);}isOpen = false;}
}

如果代码帮到你,还请点个关注,给个三连。

感谢你的支持,如有其他疑问欢迎评论。

@Liam 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com