NullReferenceException:对象引用未设置到对象 GamePause.Awake () 的实例

问题描述 投票:0回答:0

我有这样的问题。也许是因为我安装了一个新的数据包“输入系统”,这样发生了,还有很多关于控制器问题的错误。两个错误都是同样的原因?我应该先解决哪个错误,以及如何解决

上一个

using System.Collections;
using System.Collections.Generic;
using UnityEngine.SceneManagement;
using UnityEngine.UIElements;
using UnityEngine;

public class GamePause : MonoBehaviour
{
    [SerializeField] VisualTreeAsset _gamePause;
    [SerializeField] VisualTreeAsset _settingMenu;
    [SerializeField] VisualTreeAsset _audioSetting;
    VisualElement _gameSetting;
    VisualElement _gamePauseVE;
    VisualElement _settingMenuVE;
    VisualElement _audioSettingVE;
    UIDocument _doc;
    Button _gprbuttons; //RESU
    Button _gpsbuttons; //SETT
    Button _gpmbuttons; //MAIN
    Button _gpdbuttons; //DESK
    Button _smabuttons; //AUDIO
    Button _smcbuttons; //CONTR
    Button _smgbuttons; //GAMEP

    Button _asbbuttons; //BACK
    Button _pauseButton;



    void Awake()
    {
        _doc = GetComponent<UIDocument>();
        _gameSetting = _doc.rootVisualElement.Q<VisualElement>("MiddleSection");
        _pauseButton = _doc.rootVisualElement.Q<Button>("Pause");
        _pauseButton.clicked += PauseButtonOnClicked;

        _gamePauseVE = _gamePause.CloneTree();
        var _gprbuttons = _gamePauseVE.Q<Button>("Resume");
        var settingButton = _gamePauseVE.Q<Button>("Setting");
        var btMainMenuButton = _gamePauseVE.Q<Button>("BackToMainMenu");
        var btDesktopButton = _gamePauseVE.Q<Button>("BackToDesktop");
        _gprbuttons.clicked += ResumeButtonOnClicked;
        settingButton.clicked += SettingButtonOnClicked;
        btMainMenuButton.clicked += BTMainMenuButtonOnClicked;
        btDesktopButton.clicked += BTDesktopButtonOnClicked;

        _settingMenuVE = _settingMenu.CloneTree();
        var audioButton = _settingMenuVE.Q<Button>("Audio");
        var controlButton = _settingMenuVE.Q<Button>("Control");
        var gameplayButton = _settingMenuVE.Q<Button>("Gameplay");
        var btMainPauseButton = _settingMenuVE.Q<Button>("Back");
        audioButton.clicked += AudioButtonOnClicked;
        controlButton.clicked += ControlButtonOnClicked;
        gameplayButton.clicked += GameplayButtonOnClicked;
        btMainPauseButton.clicked += btMainPauseButtonOnClicked;

        _audioSettingVE = _audioSetting.CloneTree();
        var btSettingMenuMButton = _audioSettingVE.Q<Button>("Back");
        btSettingMenuMButton.clicked += btSettingMenuButtonOnClicked;



    }

    void PauseButtonOnClicked()
    {
        _gameSetting.Clear();
        _gameSetting.Add(_gamePauseVE);
    }

    void ResumeButtonOnClicked()
    {

    }

    void SettingButtonOnClicked()
    {
        _gameSetting.Clear();
        _gameSetting.Add(_settingMenuVE);
    }

    void BTMainMenuButtonOnClicked()
    {
        SceneManager.LoadScene("MainMenu");
    }

    void BTDesktopButtonOnClicked()
    {
        Application.Quit();
    }

    void AudioButtonOnClicked()
    {
        _gameSetting.Clear();
        _gameSetting.Add(_audioSettingVE);
    }

    void ControlButtonOnClicked()
    {

    }

    void GameplayButtonOnClicked()
    {

    }

    void btMainPauseButtonOnClicked()
    {
        _gameSetting.Clear();
        _gameSetting.Add(_gamePauseVE);
    }

    void btSettingMenuButtonOnClicked()
    {
        _gameSetting.Clear();
        _gameSetting.Add(_settingMenuVE);
    }
}

在bug之后尝试修复。它会更有效率吗?

using System.Collections;
using System.Collections.Generic;
using UnityEngine.SceneManagement;
using UnityEngine.UIElements;
using UnityEngine;

public class GamePause : MonoBehaviour
{
    [SerializeField] VisualTreeAsset _gamePause;
    [SerializeField] VisualTreeAsset _settingMenu;
    [SerializeField] VisualTreeAsset _audioSetting;
    VisualElement _gameSetting;
    VisualElement _gamePauseVE;
    VisualElement _settingMenuVE;
    VisualElement _audioSettingVE;
    UIDocument _doc;
    Button _pauseButton;
    Button _gprbuttons; //RESU
    Button _gpsbuttons; //SETT
    Button _gpmbuttons; //MAIN
    Button _gpdbuttons; //DESK
    Button _smabuttons; //AUDIO
    Button _smcbuttons; //CONTR
    Button _smgbuttons; //GAMEP
    Button _smbbuttons; //BACK
    Button _asbbuttons; //BACK

    void Awake()
    {
        _doc = GetComponent<UIDocument>();
        _gameSetting = _doc.rootVisualElement.Q<VisualElement>("MiddleSection");
        _pauseButton = _doc.rootVisualElement.Q<Button>("Pause");
        _pauseButton.clicked += PauseButtonOnClicked;

        _gamePauseVE = _gamePause.CloneTree();
        _gprbuttons = _gamePauseVE.Q<Button>("Resume");
        _gpsbuttons = _gamePauseVE.Q<Button>("Setting");
        _gpmbuttons = _gamePauseVE.Q<Button>("BackToMainMenu");
        _gpdbuttons = _gamePauseVE.Q<Button>("BackToDesktop");
        _gprbuttons.clicked += ResumeButtonOnClicked;
        _gpsbuttons.clicked += SettingButtonOnClicked;
        _gpmbuttons.clicked += BTMainMenuButtonOnClicked;
        _gpdbuttons.clicked += BTDesktopButtonOnClicked;

        _settingMenuVE = _settingMenu.CloneTree();
        _smabuttons = _settingMenuVE.Q<Button>("Audio");
        _smcbuttons = _settingMenuVE.Q<Button>("Control");
        _smgbuttons = _settingMenuVE.Q<Button>("Gameplay");
        _smbbuttons = _settingMenuVE.Q<Button>("Back");
        _smabuttons.clicked += AudioButtonOnClicked;
        _smcbuttons.clicked += ControlButtonOnClicked;
        _smgbuttons.clicked += GameplayButtonOnClicked;
        _smbbuttons.clicked += _smbbuttonsOnClicked;

        _audioSettingVE = _audioSetting.CloneTree();
        _asbbuttons = _audioSettingVE.Q<Button>("Back");
        _asbbuttons.clicked += btSettingMenuButtonOnClicked;
    }

    void PauseButtonOnClicked()
    {
        _gameSetting.Clear();
        _gameSetting.Add(_gamePauseVE);
    }

    void ResumeButtonOnClicked()
    {

    }

    void SettingButtonOnClicked()
    {
        _gameSetting.Clear();
        _gameSetting.Add(_settingMenuVE);
    }

    void BTMainMenuButtonOnClicked()
    {
        SceneManager.LoadScene("MainMenu");
    }

    void BTDesktopButtonOnClicked()
    {
        Application.Quit();
    }

    void AudioButtonOnClicked()
    {
        _gameSetting.Clear();
        _gameSetting.Add(_audioSettingVE);
    }

    void ControlButtonOnClicked()
    {

    }

    void GameplayButtonOnClicked()
    {

    }

    void _smbbuttonsOnClicked()
    {
        _gameSetting.Clear();
        _gameSetting.Add(_gamePauseVE);
    }

    void btSettingMenuButtonOnClicked()
    {
        _gameSetting.Clear();
        _gameSetting.Add(_settingMenuVE);
    }
}

任何建议或意见。 :)

unityscript uielement
© www.soinside.com 2019 - 2024. All rights reserved.