[英]Compare and copy two the same option but different in script(C# Unity)
我有3個腳本,分別是OptionPopup.cs , MC_StreamingOption.cs , MC_OptionPopUp.cs 。 現在,這里是我的UI的屏幕截圖,以便您可以完全理解我的問題。
Horse Racing Scene
左側下方的選項必須與右側游戲選項板上的值相同。
例如:我選擇“ Rendering
然后在GameOption上選中 “ Rendering
,就像我在GameOption上選擇“ Rendering
然后在左側下方的“賽馬場景”中選中“ Rendering
。
所以這是我的游戲選項 (在右側選項中)的腳本。 注意: 它們在不同的場景上,所以基本上我不能在UI上使用靜態字段
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場景中所做的事情(在下面的左側)
//[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;
}
}
}
因此,我通過以下代碼調用游戲選項(在右側):
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.