So i am woking on a project and it is supposed to us a general handler script attached to a gameobject in a persistent scene, i need to access this script to switch between scenes and create a game over, and it utilises GameObject.Find() to retrieve this object
This is the code for the menu_manager accessing the object
public AudioSource AmbientAudio;
public AudioSource MusicAudio;
public GameObject main_menu;
public GameObject Options_menu;
public Slider Ambient_volume_slider;
public TextMeshProUGUI Ambient_volume_value;
private double Ambient_volume_storage;
public Slider Music_volume_slider;
public TextMeshProUGUI Music_volume_value;
private double Music_volume_storage;
public GameObject Volume_menu;
public GameObject Level_selector;
public general_handler hand;
public GameObject per_scene;
public bool per_scene_loaded;
public GameObject test;
void Start(){
}
void FixedUpdate(){
if(!SceneManager.GetSceneByName("persistent_scene").isLoaded && per_scene_loaded == false){
SceneManager.LoadSceneAsync("persistent_scene", LoadSceneMode.Additive);
per_scene_loaded = true;
print("scene_loaded");
}
set_ambient_volume();
}
public void quit(){
Application.Quit();
}
public void open_options()
{
main_menu.SetActive(false);
Options_menu.SetActive(true);
}
public void close_option(){
Options_menu.SetActive(false);
main_menu.SetActive(true);
}
public void set_ambient_volume(){
AmbientAudio.volume = Ambient_volume_slider.value;
Ambient_volume_storage = Ambient_volume_slider.value * 100;
Ambient_volume_value.text = Ambient_volume_storage.ToString("f2");
}
public void set_music_volume(){
MusicAudio.volume = Music_volume_slider.value;
Music_volume_storage = Music_volume_slider.value *400;
Music_volume_value.text = Music_volume_storage.ToString("f2");
}
public void Open_sound_screen(){
Options_menu.SetActive(false);
Volume_menu.SetActive(true);
}
public void Close_sound_screem(){
Volume_menu.SetActive(false);
Options_menu.SetActive(true);
}
public void Load_Level_1(){
print(GameObject.Find("john han").tag);
hand = GameObject.Find("john han").transform.GetComponent<general_handler>();
hand.load_scene("main_menu","Level_1");
}
public void open_level_selector(){
switch_menus(main_menu, Level_selector);
}
void switch_menus(GameObject menu1, GameObject menu2){
menu1.SetActive(false);
menu2.SetActive(true);
}
public void close_level_selector(){
switch_menus(Level_selector,main_menu);
}
public void Load_level(int level_index){
hand = GameObject.Find("john han").transform.GetComponent<general_handler>();
string level_name = "Level_"+ level_index.ToString();
hand.load_scene("main_menu",level_name);
hand.last_loaded_scene = level_index;
}
public void GoBackToMenu(){
hand = GameObject.Find("john han").transform.GetComponent<general_handler>();
}
every time i try to access this object in the build it gives me this error
NullReferenceException: Object reference not set to an instance of an object
at general_handler.load_scene (System.String scene1, System.String scene2) [0x00001] in C:\Users\Admin\Desktop\PP\Assets\scripts\menu\general_handler.cs:30
at menu_manager.Load_level (System.Int32 level_index) [0x0002d] in C:\Users\Admin\Desktop\PP\Assets\scripts\menu\menu_manager.cs:90
at UnityEngine.Events.InvokableCall1[T1].Invoke (T1 args0) [0x00010] in C:\buildslave\unity\build\Runtime\Export\UnityEvent\UnityEvent.cs:221 at UnityEngine.Events.CachedInvokableCall
1[T].Invoke (System.Object[ ] args) [0x00001] in C:\buildslave\unity\build\Runtime\Export\UnityEvent\UnityEvent.cs:359
at UnityEngine.Events.UnityEvent.Invoke () [0x00074] in C:\buildslave\unity\build\Runtime\Export\UnityEvent\UnityEvent\UnityEvent_0.cs:70
at UnityEngine.UI.Button.Press () [0x00027] in C:\Program Files\Unity\Hub\Editor\2020.1.10f1\Editor\Data\Resources\PackageManager\BuiltInPackages\com.unity.ugui\Runtime\UI\Core\Button.cs:68
at UnityEngine.UI.Button.OnPointerClick (UnityEngine.EventSystems.PointerEventData eventData) [0x00010] in C:\Program Files\Unity\Hub\Editor\2020.1.10f1\Editor\Data\Resources\PackageManager\BuiltInPackages\com.unity.ugui\Runtime\UI\Core\Button.cs:110
at UnityEngine.EventSystems.ExecuteEvents.Execute (UnityEngine.EventSystems.IPointerClickHandler handler, UnityEngine.EventSystems.BaseEventData eventData) [0x00001] in C:\Program Files\Unity\Hub\Editor\2020.1.10f1\Editor\Data\Resources\PackageManager\BuiltInPackages\com.unity.ugui\Runtime\EventSystem\ExecuteEvents.cs:50
at UnityEngine.EventSystems.ExecuteEvents.Execute[T] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.ExecuteEvents+EventFunction1[T1] functor) [0x0006c] in C:\Program Files\Unity\Hub\Editor\2020.1.10f1\Editor\Data\Resources\PackageManager\BuiltInPackages\com.unity.ugui\Runtime\EventSystem\ExecuteEvents.cs:261 UnityEngine.DebugLogHandler:Internal_LogException(Exception, Object) UnityEngine.DebugLogHandler:LogException(Exception, Object) UnityEngine.Logger:LogException(Exception, Object) UnityEngine.Debug:LogException(Exception) UnityEngine.EventSystems.ExecuteEvents:Execute(GameObject, BaseEventData, EventFunction
1) (at C:\Program Files\Unity\Hub\Editor\2020.1.10f1\Editor\Data\Resources\PackageManager\BuiltInPackages\com.unity.ugui\Runtime\EventSystem\ExecuteEvents.cs:265)
UnityEngine.EventSystems.StandaloneInputModule:ReleaseMouse(PointerEventData, GameObject) (at C:\Program Files\Unity\Hub\Editor\2020.1.10f1\Editor\Data\Resources\PackageManager\BuiltInPackages\com.unity.ugui\Runtime\EventSystem\InputModules\StandaloneInputModule.cs:187)
UnityEngine.EventSystems.StandaloneInputModule:ProcessMousePress(MouseButtonEventData) (at C:\Program Files\Unity\Hub\Editor\2020.1.10f1\Editor\Data\Resources\PackageManager\BuiltInPackages\com.unity.ugui\Runtime\EventSystem\InputModules\StandaloneInputModule.cs:641)
UnityEngine.EventSystems.StandaloneInputModule:ProcessMouseEvent(Int32) (at C:\Program Files\Unity\Hub\Editor\2020.1.10f1\Editor\Data\Resources\PackageManager\BuiltInPackages\com.unity.ugui\Runtime\EventSystem\InputModules\StandaloneInputModule.cs:547)
UnityEngine.EventSystems.StandaloneInputModule:ProcessMouseEvent() (at C:\Program Files\Unity\Hub\Editor\2020.1.10f1\Editor\Data\Resources\PackageManager\BuiltInPackages\com.unity.ugui\Runtime\EventSystem\InputModules\StandaloneInputModule.cs:527)
UnityEngine.EventSystems.StandaloneInputModule:Process() (at C:\Program Files\Unity\Hub\Editor\2020.1.10f1\Editor\Data\Resources\PackageManager\BuiltInPackages\com.unity.ugui\Runtime\EventSystem\InputModules\StandaloneInputModule.cs:282)
UnityEngine.EventSystems.EventSystem:Update() (at C:\Program Files\Unity\Hub\Editor\2020.1.10f1\Editor\Data\Resources\PackageManager\BuiltInPackages\com.unity.ugui\Runtime\EventSystem\EventSystem.cs:376)
6618754–753964–general_handler.cs (2.38 KB)
6618754–753970–menu_manager.cs (3.14 KB)