Unity:背景图像的旋转和按钮的缩放动画
实现控制两个背景图像的旋转,并且可以通过点击按钮来放大或缩小父级对象,步骤如下:
1、旋转背景图像:
有两个背景图像 wai
和 nei
,分别代表外背景和内背景。
这两个背景图像会以相反的方向旋转,wai
向前旋转,nei
向后旋转。
旋转速度可以通过 speed
变量进行设置。
2、按钮点击事件:
按钮 btnshow
,点击该按钮会触发 btnshowClick
方法。
当按钮被点击时,父级对象 m_transform
会进行缩放动画:
如果当前对象是放大状态,点击后会缩小到 0.5 倍。
如果当前对象是缩小状态,点击后会放大到 1 倍。
3、每帧旋转:
ZhuanOne
方法在每一帧都会被调用,用于实现背景图像的持续旋转。
using DG.Tweening; // 使用 DOTween 插件来实现动画效果
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
/// <summary>
/// 内外两个背景 反向旋转 可以设置旋转速度
/// </summary>
public class RotateTest : MonoBehaviour
{
[Header("父级")]
public Transform m_transform; // 父级对象,用于缩放动画
[Header("背景")]
public Image wai; // 外背景图像
public Image nei; // 内背景图像
[Header("点击UI")]
public Button btnshow; // 用于触发缩放动画的按钮
bool host1Click = false; // 用于记录按钮是否被点击过
[Header("旋转速度")]
public float speed; // 背景图像的旋转速度
// Start is called before the first frame update
void Start()
{
btnshow.onClick.AddListener(btnshowClick); // 绑定按钮点击事件
}
// 按钮点击事件处理
public void btnshowClick()
{
// 当图像被放大时,点击会缩小
if (host1Click)
{
host1Click = false;
m_transform.DOScale(new Vector3(0.5f, 0.5f, 0.5f), 0.5f); // 缩小到 0.5 倍
}
// 当图像默认大小时,点击会放大
else
{
host1Click = true;
m_transform.DOScale(new Vector3(1f, 1f, 1f), 0.5f); // 放大到 1 倍
}
}
// Update is called once per frame
void Update()
{
ZhuanOne(); // 每帧调用旋转方法
}
// 每帧都在执行的旋转事件
public void ZhuanOne()
{
try
{
wai.transform.Rotate(Vector3.forward, speed); // 外背景向前旋转
}
catch
{
// 捕获异常,防止旋转过程中出现错误
}
try
{
nei.transform.Rotate(Vector3.back, speed); // 内背景向后旋转
}
catch
{
// 捕获异常,防止旋转过程中出现错误
}
}
}
适用于需要背景旋转和简单 UI 交互的场景