C# 统一给我变量未赋值的错误

C# 统一给我变量未赋值的错误,c#,unity3d,C#,Unity3d,我为我的游戏编写了音量滑块代码,但我遇到了unity的问题 我尝试了很多代码,但都没有成功,我需要有人向我解释为什么它会给我错误,以及我如何修复它 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Audio; public class OptionsMenu : MonoBehaviour { public AudioMixer mixer

我为我的游戏编写了音量滑块代码,但我遇到了unity的问题

我尝试了很多代码,但都没有成功,我需要有人向我解释为什么它会给我错误,以及我如何修复它

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

public class OptionsMenu : MonoBehaviour
{

    public AudioMixer mixer;

    public void SetLevel (float sliderValue)
    {
        mixer.SetFloat("volume", Mathf.Log10(sliderValue) * 20);
    }

}

当我改变滑块时,它应该改变我的主混音器,在使用它之前,每个变量都必须被赋值/初始化

旧的/接近于像本地C++那样的金属语言不会有这样的警告,因此使用任何偶然发生的数据都被纯的机会写入该内存位置。威奇从来就不是什么明智的事。如果C检测到这样的错误,它就不会编译

我想猜测AudioMixer是一个类,所以您需要创建一个实例来使用它:

public AudioMixer mixer = new AudioMixer();
但也有一些特殊情况,比如工厂模式,我必须查找音频混音器使用的方法

编辑:假设我得到了正确的AudioMixer类,它似乎是一个singleton。但我找不到它的工厂方法:

Edit2:我找不到一种非设计师的方法来在线创建AudioMixer实例。所以我添加了Unity3D标签

Edit3:归功于3Dave:AudioMixer是一个设计时类,与编辑器中的Audio Mixer窗口绑定。它不应该被实例化或动态创建


因此,它确实不应该是由设计师以外的任何人创造的。因此,代码中的变量没有多大意义。

是mizer.SetFloat行上的错误,并且mixer已经实例化了吗?@d219:我猜是这一行。这段代码中没有初始化它。错误是UnasaginedReferenceException,它表示尚未分配选项菜单的变量mixer。这是正确的。此代码中未分配变量混合器。您可以通过分配引用来解决未分配的引用错误。@EpicOGnamEYT:Nope。混合器是变量。公众知道它是多么容易接近。AudioMixer是变量的类型,可能是一个类名。您能帮我解决这个错误吗?它说这个变量还没有被激活assigned@EpicOGnamEYT解决方法是给变量赋值。对于音频混音器来说,如何做到这一点比平均变量要难一些。只有团结一致的人才会知道这一点。因此,我给你的问题加上了相应的标签。或者,如果AudioMixer是一个单例,在这里根本不声明变量,只使用单例。我无法快速找到使用AudioMixer的方法,但这是另一种方法。AudioMixer是一个与编辑器中的Audio Mixer窗口绑定的设计时类。它不应该被实例化或动态创建。