gpt4 book ai didi

c# - 无法找出如何发出步行声音…(2d)

转载 作者:行者123 更新时间:2023-12-03 02:31:50 25 4
gpt4 key购买 nike

因此,我尝试使播放器在握住d或a时具有行走声音(在发现后会添加随机的行走声音阵列),但是如果我停止声音(get组件.stop),它将永远不会被听到。

using System.Collections.Generic;
using UnityEngine;
using System;

public class FootScript : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{

}

// Update is called once per frame
void Update()
{
if (Input.GetKey(KeyCode.D))
{
GetComponent<AudioSource>().Play();
} else
GetComponent<AudioSource>().Stop();

}
}

最佳答案

此代码存在一些问题。
您每帧调用Update的事实并没有帮助。基本上PlayStop都将被称为很多,而且通话可能真的很昂贵。
我不是Unity专家,但是我确认,您将在上下按键时使用一些事件处理程序-尽管如此,我会尽量坚持使用您的方法。
注意:伪代码
因此,我将尝试搜索此内容,但我希望这样的事情:

bool IsMovementAudioPlaying = false;

// Update is called once per frame
void Update()
{
//similar for A
if (Input.GetKey(KeyCode.D) && !IsMovementAudioPlaying )
{
IsMovementAudioPlaying = true;
GetComponent<AudioSource>().Play();
}

//similar for A, you can use different sounds if you want
else if (IsMovementAudioPlaying)
{
IsMovementAudioPlaying = false;
GetComponent<AudioSource>().Stop();
}
}
您需要对此进行一些调整,以正确支持两个键。
这里的核心思想是跟踪需要执行的 action,并仅在需要时执行一次。
您也可以重写此概念以将其应用到渲染循环中,但是通常事件可以帮助您更好地构造它。

关于c# - 无法找出如何发出步行声音…(2d),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61422942/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com