簡體   English   中英

比較並復制兩個相同的選項,但腳本中的內容不同(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然后在GameOption選中Rendering ,就像我在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 Racing場景中所做的事情(在下面的左側)

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中,我別無選擇,只能再次獲取playerprefs。 而且有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM