unity中控制动画暂停

2015年01月12日 15:31 0 点赞 0 评论 更新于 2025-11-21 14:05

在Unity开发中,控制动画暂停是一个常见需求。通常可以使用AnimationState来控制动画的播放状态,例如通过AnimationState.speed属性来控制播放速度。下面将通过具体的代码实例来详细说明。

using UnityEngine;
using System.Collections;

public class MusicControlScript : MonoBehaviour
{
// 音频源组件,用于播放音乐
public AudioSource music;
// 音乐音量
public float musicVolume;
// 定义GUI窗口的矩形区域
public Rect windowRect = new Rect(700, 20, 90, 225);
// 用于控制是否显示GUI窗口的标志
bool showGUI;

// 在脚本实例被启用时调用,进行初始化操作
void Start()
{
showGUI = false;
musicVolume = 1.0F;
}

// 用于绘制GUI元素
void OnGUI()
{
// 创建一个按钮,点击后显示GUI窗口
if (GUI.Button(new Rect(Screen.width - 60, 5, 50, 50), "Music"))
{
showGUI = true;
}

// 如果标志为真,则显示GUI窗口
if (showGUI)
{
windowRect = GUI.Window(0, windowRect, DoMyWindow, "Music");
}
}

// 定义GUI窗口的内容
void DoMyWindow(int windowID)
{
// 创建一个关闭按钮,点击后隐藏GUI窗口
if (GUI.Button(new Rect(75, 5, 10, 10), ""))
{
showGUI = false;
}

// 创建一个播放按钮,点击后播放音乐
if (GUI.Button(new Rect(5, 30, 45, 45), "Play"))
{
if (!music.isPlaying)
{
music.Play(); // 播放音乐
}
}

// 创建一个停止按钮,点击后停止音乐
if (GUI.Button(new Rect(5, 85, 45, 45), "Stop"))
{
if (music.isPlaying)
{
music.Stop(); // 停止音乐
}
}

// 创建一个暂停按钮,点击后暂停音乐
if (GUI.Button(new Rect(5, 140, 45, 45), "Pause"))
{
if (music.isPlaying)
{
music.Pause(); // 暂停音乐
}
}

// 创建一个垂直滑动条,用于调节音乐音量
musicVolume = GUI.VerticalSlider(new Rect(65, 30, 30, 150), musicVolume, 0.0F, 1.0F);

// 显示当前音量的百分比
GUI.Label(new Rect(5, 190, 90, 20), "Voice: " + (int)(musicVolume * 100) + "%");

// 如果音乐正在播放,则设置音乐的音量
if (music.isPlaying)
{
music.volume = musicVolume;
}

// 允许用户拖动窗口
GUI.DragWindow(new Rect(0, 0, 100, 30));
}
}

以上代码实现了一个简单的音乐控制界面,包含播放、停止、暂停和音量调节功能。在实际开发中,可根据具体需求对代码进行修改和扩展。