比较并复制两个相同的选项但在脚本中不同(C# Unity)

Compare and copy two the same option but different in script(C# Unity)

我有 3 个脚本,它们是 OptionPopup.csMC_StreamingOption.csMC_OptionPopUp.cs。现在这里是我的UI的屏幕截图,以便您完全理解我的问题。

Horse Racing Scene 左侧下方的选项必须与右侧游戏选项板上的值相同。

例如:我选择 Rendering 然后在 GameOptionRendering 也将被选中,就像我在 [=40] 上选择时一样=]GameOption Rendering 然后在左侧下方的赛马场景中 Rendering 将被选中。

所以这是我的游戏选项(在右侧选项)的脚本。 注意:它们在不同的场景中,所以基本上我无法在我的 UI 的

上使用静态字段

OptionPopUp.cs

 public void LiveStreaming()
{
    
    if (livestream.normalSprite == RADIO_OFF_SPRITE_NAME && MC_StreamingOption.isLiveStreamingOutside)
    {
        livestream.normalSprite = RADIO_ON_SPRITE_NAME;
        isCheckedLivestream = true;
        PlayerPrefs.SetInt(LiveStreaming_, 1);

        if (isCheckedLivestream)
        {
            render.normalSprite = RADIO_OFF_SPRITE_NAME;
            PlayerPrefs.SetInt(Rendering_, 0);
        }
    } else
    {
        livestream.normalSprite = RADIO_OFF_SPRITE_NAME;
        isCheckedLivestream = false;
        PlayerPrefs.SetInt(LiveStreaming_, 0);

        if (!isCheckedLivestream && render.normalSprite == RADIO_OFF_SPRITE_NAME)
        {
            render.normalSprite = RADIO_ON_SPRITE_NAME;
            PlayerPrefs.SetInt(Rendering_, 1);
        }
    } 
}

public void Rendering()
{

    if (render.normalSprite == RADIO_OFF_SPRITE_NAME && MC_StreamingOption.isRenderingOutside)
    {
        render.normalSprite = RADIO_ON_SPRITE_NAME;
        isCheckedRendering = true;
        PlayerPrefs.SetInt(Rendering_, 1);

        if (isCheckedRendering)
        {
            livestream.normalSprite = RADIO_OFF_SPRITE_NAME;
            PlayerPrefs.SetInt(LiveStreaming_, 0);
        }
    } else
    {
        render.normalSprite = RADIO_OFF_SPRITE_NAME;
        isCheckedRendering = false;
        PlayerPrefs.SetInt(Rendering_, 0);

        if (!isCheckedRendering && livestream.normalSprite == RADIO_OFF_SPRITE_NAME)
        {
            livestream.normalSprite = RADIO_ON_SPRITE_NAME;
            PlayerPrefs.SetInt(LiveStreaming_, 1);
        }
    }
}

这是我在 Horce 赛车场景(在下方左侧)

中所做的

MC_StreamingOption

//[PK Debug 2/6/2018]
public string RADIO_ON_SPRITE_NAME = "popup_radiobtn01_on";

public string RADIO_OFF_SPRITE_NAME = "popup_radiobtn01_off";

[SerializeField] UIButton livestream = null;

[SerializeField] UIButton render = null;

public static bool isLiveStreamingOutside = false;
public static bool isRenderingOutside = false;

public void LiveStreaming()
{
    if (livestream.normalSprite == RADIO_OFF_SPRITE_NAME)
    {
        livestream.normalSprite = RADIO_ON_SPRITE_NAME;
        //render.normalSprite = RADIO_OFF_SPRITE_NAME;

        if (livestream.normalSprite == RADIO_ON_SPRITE_NAME)
        {
            PlayerPrefs.GetInt(OptionPopup.LiveStreaming_, 1);
            isLiveStreamingOutside = true;
            render.normalSprite = RADIO_OFF_SPRITE_NAME;
        }
    }
    else
    {
        livestream.normalSprite = RADIO_OFF_SPRITE_NAME;
        render.normalSprite = RADIO_ON_SPRITE_NAME;

        if (livestream.normalSprite == RADIO_OFF_SPRITE_NAME)
        {
            PlayerPrefs.GetInt(OptionPopup.LiveStreaming_, 0);
            isLiveStreamingOutside = false;
            render.normalSprite = RADIO_ON_SPRITE_NAME;
        }
    }
}

public void Rendering()
{
    if (render.normalSprite == RADIO_OFF_SPRITE_NAME)
    {
        render.normalSprite = RADIO_ON_SPRITE_NAME;
        livestream.normalSprite = RADIO_OFF_SPRITE_NAME;

        if (render.normalSprite == RADIO_ON_SPRITE_NAME)
        {
            PlayerPrefs.GetInt(OptionPopup.Rendering_,1);
            isRenderingOutside = true;
            livestream.normalSprite = RADIO_OFF_SPRITE_NAME;
        }
    } else
    {
        render.normalSprite = RADIO_OFF_SPRITE_NAME;
        livestream.normalSprite = RADIO_ON_SPRITE_NAME;

        if (render.normalSprite == RADIO_OFF_SPRITE_NAME)
        {
            PlayerPrefs.GetInt(OptionPopup.Rendering_, 0);
            isRenderingOutside = false;
            livestream.normalSprite = RADIO_ON_SPRITE_NAME;
        }
    }
}

所以我通过以下代码调用游戏选项(在右侧):

MC_OptionPopUp.cs

if (tzGlobal.Instance.UserConsoleType == tzGlobal.eGameRH_ConsoleType.LOBBY)
    {
        if (PlayerPrefs.GetInt(OptionPopup.LiveStreaming_) == 1)
        {
            livestream.normalSprite = RADIO_ON_SPRITE_NAME;
        }
        else
        {
            livestream.normalSprite = RADIO_OFF_SPRITE_NAME;
        }

        if (PlayerPrefs.GetInt(OptionPopup.Rendering_) == 1)
        {
            render.normalSprite = RADIO_ON_SPRITE_NAME;
        }
        else
        {
            render.normalSprite = RADIO_OFF_SPRITE_NAME;
        }
    }

就这样,这样你就会知道我就是这样做的。如果有人能帮助我解决我的问题,我将不胜感激。

我在这里做的是这个

if (livestream.normalSprite == RADIO_OFF_SPRITE_NAME)
    {
        isLiveStreamingOutside = true;
        PlayerPrefs.SetInt(OptionPopup.LiveStreaming_, 1);

        if (isLiveStreamingOutside)
        {
            render.normalSprite = RADIO_OFF_SPRITE_NAME;
            livestream.normalSprite = RADIO_ON_SPRITE_NAME;
            PlayerPrefs.SetInt(OptionPopup.Rendering_, 0);
        }
    }
    else
    {

        isLiveStreamingOutside = false;
        PlayerPrefs.SetInt(OptionPopup.LiveStreaming_, 0);

        if (!isLiveStreamingOutside)
        {
            render.normalSprite = RADIO_ON_SPRITE_NAME;
            livestream.normalSprite = RADIO_OFF_SPRITE_NAME;
            PlayerPrefs.SetInt(OptionPopup.Rendering_, 1);
        }
    }

所以从MC_StreamingOption.cs开始,我别无选择,只能再次获得播放器首选项。它有效。