unity3d 脚本在移动到另一个游戏对象后损坏

ijxebb2r  于 2023-02-09  发布在  其他
关注(0)|答案(1)|浏览(174)

我有一个脚本,控制我的主菜单是在一个游戏对象,并将其移动到另一个游戏对象,并重新连接所有松散的结束。现在由于某种原因,我的按钮都不工作,即使突出显示。
刚刚有两个游戏对象,并使用编辑器在它们之间移动脚本脚本本身并没有做太多,只是这样:

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

public class MainMenu : MonoBehaviour
{
    public GameObject mainMenu;
    public GameObject optionsMenu;
    public GameObject modeMenu;
    public Dropdown resolutionDropdown;
    private Resolution[] resolutions;
    public Toggle fullscreenToggle;

    public void StartGameLocal()
    {
        SceneManager.LoadScene("Local2P");
    }

    public void StartGameAI()
    {
        SceneManager.LoadScene("AI2P");
    }

    public void MenuToOptions()
    {
        mainMenu.SetActive(false);
        optionsMenu.SetActive(true);
    }

    public void OptionsToMenu()
    {
        mainMenu.SetActive(true);
        optionsMenu.SetActive(false);
    }

    public void MenuToMode()
    {
        mainMenu.SetActive(false);
        modeMenu.SetActive(true);
    }

    public void ModeToMenu()
    {
        mainMenu.SetActive(true);
        modeMenu.SetActive(false);
    }

    public void ExitGame()
    {
        Application.Quit();
    }

    void Start()
    {
        resolutions = Screen.resolutions;
        resolutionDropdown.ClearOptions();
        List<string> options = new List<string>();
        int currentResolutionIndex = 0;

        for (int i = 0; i < resolutions.Length; i++)
        {
            string option = resolutions[i].width + " x " + resolutions[i].height;
            options.Add(option);
            if (resolutions[i].width == Screen.width && resolutions[i].height == Screen.height)
                currentResolutionIndex = i;
        }
        resolutionDropdown.AddOptions(options);
        resolutionDropdown.value = currentResolutionIndex;
        resolutionDropdown.RefreshShownValue();
        if (Screen.fullScreen == true)
        {
            fullscreenToggle.isOn = true;
        }
    }

    public void SetResolution(int resolutionIndex)
    {
        Resolution resolution = resolutions[resolutionIndex];
        Screen.SetResolution(resolution.width,
                  resolution.height, Screen.fullScreen);
        PlayerPrefs.SetInt("ResolutionPreference", resolutionDropdown.value);
    }

    public void SetFullscreen(bool isFullscreen)
    {
        Screen.fullScreen = isFullscreen;
        if (isFullscreen)
        {
            PlayerPrefs.SetInt("FullscreenPreference", 1);
        }
        else
        {
            PlayerPrefs.SetInt("FullscreenPreference", 0);
        }
    }
    
    void Update()
    {
        if (Input.GetKey(KeyCode.Escape))
        {
            if (optionsMenu.activeSelf)
            {
                OptionsToMenu();
            }
            else if (optionsMenu.activeSelf)
            {
                ModeToMenu();
            }
            else
            {
                Application.Quit();
            }
        }
    }
}

我不知道如何解决这个问题,为什么我的按钮只是停止工作,即使在重新连接一切,但请帮助!pidoss.还没有检查更新代码,看看它是否工作,如果你们有建议,让我知道

inb24sb2

inb24sb21#

您的按钮可能在其OnClick处理程序中指向此脚本中的函数。如果您移动了脚本的位置,则需要转到每个按钮并重新挂钩这些处理程序。

相关问题