Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Unity > Общие вопросы

Общие вопросы вопросы не попадающие ни в один из доступных разделов

Ответ
 
Опции темы
Старый 02.04.2017, 23:06   #1
Артур
AnyKey`щик
 
Регистрация: 02.04.2017
Сообщений: 1
Написано 0 полезных сообщений
(для 0 пользователей)
Хорошо C# Unity: Проблемы с подпиской на события

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using System.IO;
 
public class SettingManager : MonoBehaviour
{
    public Toggle FullScreenCntr;
    public Dropdown ResolutionCntr;
    public Dropdown TextureQualityCntr;
    public Dropdown AntiAliasingCntr;
    public Dropdown vSyncCntr;
    public Slider MusicVolumeCntr;
    public Button buttonApply;
 
    public Resolution[] resolutions;
    public GameSettings gameSettings;
    public AudioSource musicSource;
 
    void OnEnable ()
    {
        gameSettings = new GameSettings ();
        resolutions = Screen.resolutions;
        foreach (Resolution resolution in resolutions)
        {
            ResolutionCntr.options.Add (new Dropdown.OptionData (resolution.ToString ()));
        }
 
        LoadSettings ();
 
        // Subscribe Events
        FullScreenCntr.onValueChanged.AddListener (delegate {
            OnFullScreenToggle ();
        });
        ResolutionCntr.onValueChanged.AddListener (delegate {
            OnResolutionChange ();
        });
        TextureQualityCntr.onValueChanged.AddListener (delegate {
            OnTextureQualityChange ();
        });
        AntiAliasingCntr.onValueChanged.AddListener (delegate {
            OnAntialiasingChange ();
        });
        vSyncCntr.onValueChanged.AddListener (delegate {
            OnVSyncChange ();
        });
        MusicVolumeCntr.onValueChanged.AddListener (delegate {
            OnMusicVolumeChange ();
        });
        buttonApply.onClick.AddListener (delegate {
            OnApplyButtonClick ();
        });
    }
 
    public void OnFullScreenToggle ()
    {
        gameSettings.fullscreen = Screen.fullScreen = FullScreenCntr.isOn;
    }
 
    public void OnResolutionChange ()
    {
        Screen.SetResolution (resolutions[ResolutionCntr.value].width, resolutions[ResolutionCntr.value].height, Screen.fullScreen);
        gameSettings.resolutionIndex = ResolutionCntr.value;
    }
 
    public void OnTextureQualityChange ()
    {
        QualitySettings.masterTextureLimit = gameSettings.textureQuality = TextureQualityCntr.value;
    }
 
    public void OnAntialiasingChange ()
    {
        QualitySettings.antiAliasing = gameSettings.antialiasing = (int)Mathf.Pow (2, AntiAliasingCntr.value);
    }
 
    public void OnVSyncChange ()
    {
        QualitySettings.vSyncCount = gameSettings.vSync = vSyncCntr.value;
    }
 
    public void OnMusicVolumeChange ()
    {
        musicSource.volume = gameSettings.musicVolume = MusicVolumeCntr.value;
    }
 
    //public void SaveSettings ()
    //{
    //  string JsonData = JsonUtility.ToJson (gameSettings, true);
    //}
 
    public void OnApplyButtonClick()
    {
        //SaveSettings ();
    }
 
    public void LoadSettings()
    {
        gameSettings = JsonUtility.FromJson<GameSettings> (File.ReadAllText(Application.persistentDataPath + "/Config/Preferences.json"));
        MusicVolumeCntr.value = gameSettings.musicVolume;
        AntiAliasingCntr.value = gameSettings.antialiasing;
        vSyncCntr.value = gameSettings.vSync;
        TextureQualityCntr.value = gameSettings.textureQuality;
        ResolutionCntr.value = gameSettings.resolutionIndex;
        FullScreenCntr.isOn = gameSettings.fullscreen;
        Screen.fullScreen = gameSettings.fullscreen;
 
        ResolutionCntr.RefreshShownValue ();
    }
}
Товарищи, требуется помощь. Возникает ошибка NullReferenceExeption

Текст ошибки: NullReferenceException: Object reference not set to an instance of an object
SettingManager.OnEnable () (at Assets/Utilities/Game Settings/Scripts/SettingManager.cs:27)

Подскажите, быть может я не правильно подписался на событие?
(Offline)
 
Ответить с цитированием
Старый 03.04.2017, 09:35   #2
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: C# Unity: Проблемы с подпиской на события

В данном случае у тебя всего несколько вариантов (ошибка на 27 строке):
ResolutionCntr == null
//или 
ResolutionCntr.options == null
//или 
resolution == null 
Скорее всего ты просто не назначил ссылку на поле ResolutionCntr в инспекторе
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 13:29.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com