抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

过关功能实现

说明:过关时开启ui,切换状态为vitory,落地后再播放动画。

VictoryScreen中增加代码:订阅按钮功能,唤出鼠标指针。

using UnityEngine;
using UnityEngine.UI;
public class VictoryScreen : MonoBehaviour
{
[SerializeField] VoidEventChannel levelClearedEventChannel;//获取事件频道
[SerializeField] Button nextLevelButton;
private void OnEnable()
{
levelClearedEventChannel.AddListener(ShowUI);
nextLevelButton.onClick.AddListener(SceneLoader.LoadNextScene);//订阅下一关按钮功能
}
private void OnDisable()
{
levelClearedEventChannel.RemoveListener(ShowUI);
nextLevelButton.onClick.RemoveListener(SceneLoader.LoadNextScene);//订阅下一关按钮功能
}
private void ShowUI()
{
GetComponent<Canvas>().enabled = true;
GetComponent<Animator>().enabled = true;
Cursor.lockState = CursorLockMode.None;
}
}

PlayerState_LandLogicUpdate中添加判定,如果玩家胜利,则切换为PlayerState_Victory状态。

image-20220923145646141

PlayerState_Victory状态主要进行随机播放获胜音效。

public class PlayerState_Victory : PlayerState
{
[SerializeField] AudioClip[] voice;
public override void Enter()
{
base.Enter();
input.DisableGamePlayInputs();//关闭动作表
player.voicePlayer.PlayOneShot(voice[Random.Range(0, voice.Length)]);
}
}

评论