因此,我正在为FPS游戏制作一个选项菜单,到目前为止,我已经开发了一个音频滑块,其使用的方法与我尝试为鼠标制作灵敏度滑块的想法相同。它似乎获得了所需的信息并将其发送到游戏对象,但是此后似乎并没有将其发送到控制FPS相机的其他脚本。
//this script controls taking information from a slider in the menu
public float mouseSens;
public void SetSens(float mouseSpeed)
{
mouseSens = mouseSpeed;
}
//this is the fps camera script
public GameObject mouseInfo; //I tried linking to the game object that holds the information
public float mouseSensitivity; //this is the float that controls mouse sensitivity.
// Start is called before the first frame update
void Start()
{
//I originally put the float mouseSensitivity = mouseInfo code here but it didn't work.
}
private void Awake()
{
float mouseSensitivity = mouseInfo.GetComponent<SettingsMenu>().mouseSens; //this is my current try to make it work.
}
非常感谢您提供任何帮助。抱歉,如果此帖子格式错误,这是我第一次在堆栈上发布。 :)
好的,在FPS相机上,有一个脚本可以让您用鼠标控制它。让我们想象一下该脚本称为FPSControllerScript(可能不是,但只需将FPSControllerScript替换为连接到相机的脚本的实际名称)。
在FPSControllerScript中,您可能有一个名为“ mouseSensitivity”或“ mouseSpeed”的变量。假设是mouseSensitivity。将以下方法添加到FPSControllerScript。
public void SetMouseSensitivity(float value) {
mouseSensitivity = value;
}
然后,附加到滑块的脚本应为:
[SerializeField]
private GameObject _FPSCamera;
public void SetSens(float mouseSpeed)
{
_FPSCamera.GetComponent<FPSControllerScript>().SetMouseSensitivity(mouseSpeed);
}
在统一编辑器中,将FPSCamera对象拖到_FPSCamera的字段中(当您在右侧的检查器中查看时,它将是滑块的脚本组件中的空字段。
由于您已经具有音量控制功能,所以我假设您知道如何将SetSens方法设置为滑块的onValueChanged处理程序。
您可能必须修改滑块的范围或对mouseSpeed进行一些其他计算以确保值合理。