feat: 新增国家选择跳过功能,首页可跳过国家选择
新增数据管理器中关联用户账号的跳过标记存储方法,修改首页逻辑,当用户未设置国家且未跳过时弹出国家选择界面,新增选择国家界面的跳过按钮,跳过后本地保存标记不再弹出。
This commit is contained in:
parent
1c699434c6
commit
c62ae623e8
@ -95,11 +95,105 @@ MonoBehaviour:
|
||||
countryParent: {fileID: 8710170637364745357}
|
||||
submitButton: {fileID: 5803830473808075884}
|
||||
backButton: {fileID: 4389239990246852526}
|
||||
skipButton: {fileID: 1668640056445937132}
|
||||
searchInput: {fileID: 1038112358046293375}
|
||||
scrollRect: {fileID: 2267190601015941531}
|
||||
textColors:
|
||||
- {r: 0.18039216, g: 1, b: 0.88235295, a: 1}
|
||||
- {r: 1, g: 1, b: 1, a: 1}
|
||||
--- !u!1 &1502726514785153912
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 8804739425715495092}
|
||||
- component: {fileID: 8300217560112048457}
|
||||
- component: {fileID: 252719876519687207}
|
||||
- component: {fileID: 8267730253850027427}
|
||||
m_Layer: 5
|
||||
m_Name: Text (Legacy)
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &8804739425715495092
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1502726514785153912}
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 3855749833711493498}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 1}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 0, y: 0}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &8300217560112048457
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1502726514785153912}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &252719876519687207
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1502726514785153912}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 0.2, g: 0.2, b: 0.2, a: 1}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_FontData:
|
||||
m_Font: {fileID: 12800000, guid: f4c31d68e7cd3454685bb4c132a52f58, type: 3}
|
||||
m_FontSize: 24
|
||||
m_FontStyle: 0
|
||||
m_BestFit: 0
|
||||
m_MinSize: 2
|
||||
m_MaxSize: 40
|
||||
m_Alignment: 4
|
||||
m_AlignByGeometry: 0
|
||||
m_RichText: 1
|
||||
m_HorizontalOverflow: 0
|
||||
m_VerticalOverflow: 0
|
||||
m_LineSpacing: 1
|
||||
m_Text: Skip
|
||||
--- !u!114 &8267730253850027427
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1502726514785153912}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 89f1d49b50a31514787b4e268b1c73bb, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
textKey: 100073
|
||||
--- !u!1 &2089848948512694666
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -703,6 +797,139 @@ MonoBehaviour:
|
||||
m_FillOrigin: 0
|
||||
m_UseSpriteMesh: 0
|
||||
m_PixelsPerUnitMultiplier: 1
|
||||
--- !u!1 &6091139404972456507
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 3855749833711493498}
|
||||
- component: {fileID: 1810750418845284180}
|
||||
- component: {fileID: 2489679025606743608}
|
||||
- component: {fileID: 1668640056445937132}
|
||||
m_Layer: 5
|
||||
m_Name: "\u8DF3\u8FC7"
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &3855749833711493498
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6091139404972456507}
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1.0003841, y: 1.0003841, z: 1.0003841}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 8804739425715495092}
|
||||
m_Father: {fileID: 1215675079679361245}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 1, y: 0.5}
|
||||
m_AnchorMax: {x: 1, y: 0.5}
|
||||
m_AnchoredPosition: {x: -29.867529, y: -0.012290955}
|
||||
m_SizeDelta: {x: 96, y: 56}
|
||||
m_Pivot: {x: 1, y: 0.5}
|
||||
--- !u!222 &1810750418845284180
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6091139404972456507}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &2489679025606743608
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6091139404972456507}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_Sprite: {fileID: 21300000, guid: 66cc1bf1c770c234895999d8c0eb34d0, type: 3}
|
||||
m_Type: 0
|
||||
m_PreserveAspect: 0
|
||||
m_FillCenter: 1
|
||||
m_FillMethod: 4
|
||||
m_FillAmount: 1
|
||||
m_FillClockwise: 1
|
||||
m_FillOrigin: 0
|
||||
m_UseSpriteMesh: 0
|
||||
m_PixelsPerUnitMultiplier: 1
|
||||
--- !u!114 &1668640056445937132
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6091139404972456507}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Navigation:
|
||||
m_Mode: 3
|
||||
m_WrapAround: 0
|
||||
m_SelectOnUp: {fileID: 0}
|
||||
m_SelectOnDown: {fileID: 0}
|
||||
m_SelectOnLeft: {fileID: 0}
|
||||
m_SelectOnRight: {fileID: 0}
|
||||
m_Transition: 1
|
||||
m_Colors:
|
||||
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
|
||||
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
|
||||
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
|
||||
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
|
||||
m_ColorMultiplier: 1
|
||||
m_FadeDuration: 0.1
|
||||
m_SpriteState:
|
||||
m_HighlightedSprite: {fileID: 0}
|
||||
m_PressedSprite: {fileID: 0}
|
||||
m_SelectedSprite: {fileID: 0}
|
||||
m_DisabledSprite: {fileID: 0}
|
||||
m_AnimationTriggers:
|
||||
m_NormalTrigger: Normal
|
||||
m_HighlightedTrigger: Highlighted
|
||||
m_PressedTrigger: Pressed
|
||||
m_SelectedTrigger: Selected
|
||||
m_DisabledTrigger: Disabled
|
||||
m_Interactable: 1
|
||||
m_TargetGraphic: {fileID: 2489679025606743608}
|
||||
m_OnClick:
|
||||
m_PersistentCalls:
|
||||
m_Calls:
|
||||
- m_Target: {fileID: 0}
|
||||
m_TargetAssemblyTypeName: ConnectDevicePageCtrl, Assembly-CSharp
|
||||
m_MethodName: ShowFingerprintPage
|
||||
m_Mode: 1
|
||||
m_Arguments:
|
||||
m_ObjectArgument: {fileID: 0}
|
||||
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
|
||||
m_IntArgument: 0
|
||||
m_FloatArgument: 0
|
||||
m_StringArgument:
|
||||
m_BoolArgument: 0
|
||||
m_CallState: 2
|
||||
--- !u!1 &7122993795827468730
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -1104,6 +1331,7 @@ RectTransform:
|
||||
- {fileID: 5281325114906705898}
|
||||
- {fileID: 4425617578161486698}
|
||||
- {fileID: 6498500707239889981}
|
||||
- {fileID: 3855749833711493498}
|
||||
m_Father: {fileID: 7590725518581769108}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
|
||||
@ -175,6 +175,25 @@ namespace Kill.Managers
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 国家选择跳过标记
|
||||
|
||||
private const string SKIP_COUNTRY_KEY = "skip_country";
|
||||
|
||||
/// <summary>用户是否已跳过国家选择(跳过后首页不再弹出选择)</summary>
|
||||
public bool HasSkippedCountry()
|
||||
{
|
||||
return PlayerPrefs.GetInt(SKIP_COUNTRY_KEY + "_" + (userInfo?.id ?? ""), 0) == 1;
|
||||
}
|
||||
|
||||
/// <summary>保存跳过国家选择标记(本机保存,与当前登录账号关联)</summary>
|
||||
public void SaveSkippedCountry()
|
||||
{
|
||||
PlayerPrefs.SetInt(SKIP_COUNTRY_KEY + "_" + (userInfo?.id ?? ""), 1);
|
||||
PlayerPrefs.Save();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region 未设置密码引导
|
||||
|
||||
/// <summary>
|
||||
|
||||
@ -14,6 +14,7 @@ public class SelectCountry : MonoBehaviour
|
||||
public Transform countryParent;
|
||||
public Button submitButton;
|
||||
public Button backButton;
|
||||
public Button skipButton;
|
||||
public InputField searchInput;
|
||||
public ScrollRect scrollRect;
|
||||
LanguageManager.Country selectCountry;
|
||||
@ -25,6 +26,7 @@ public class SelectCountry : MonoBehaviour
|
||||
public Color[] textColors;
|
||||
|
||||
private List<SelectCountryItem> _items = new List<SelectCountryItem>();
|
||||
private bool _showSkipButton;
|
||||
|
||||
/// <summary>
|
||||
/// 确认回调:code 为选中的国家代码,null 表示返回/取消
|
||||
@ -35,10 +37,12 @@ public class SelectCountry : MonoBehaviour
|
||||
/// 初始化
|
||||
/// </summary>
|
||||
/// <param name="code">当前选中的国家代码</param>
|
||||
/// <param name="showBackButton">是否显示返回按钮(主页不显示)</param>
|
||||
public void Init(string code, bool showBackButton = true)
|
||||
/// <param name="showBackButton">是否显示返回按钮(个人信息页显示,首页不显示)</param>
|
||||
/// <param name="showSkipButton">是否显示跳过按钮(首页显示,个人信息页不显示)</param>
|
||||
public void Init(string code, bool showBackButton = true, bool showSkipButton = false)
|
||||
{
|
||||
_originalCode = code;
|
||||
_showSkipButton = showSkipButton;
|
||||
|
||||
countryPrefab.SetActive(false);
|
||||
// 清理旧 item
|
||||
@ -57,6 +61,14 @@ public class SelectCountry : MonoBehaviour
|
||||
UIManager.Instance.RegisterBackAction(OnBack);
|
||||
}
|
||||
|
||||
// 跳过按钮:不选择国家,直接关闭(onConfirm(null),不更新国家)
|
||||
if (skipButton != null)
|
||||
{
|
||||
skipButton.gameObject.SetActive(showSkipButton);
|
||||
skipButton.onClick.RemoveAllListeners();
|
||||
skipButton.onClick.AddListener(OnBack);
|
||||
}
|
||||
|
||||
if (LanguageManager.Instance == null || LanguageManager.Instance.countryList == null)
|
||||
return;
|
||||
|
||||
@ -149,12 +161,17 @@ public class SelectCountry : MonoBehaviour
|
||||
|
||||
private void UpdateSubmitButton()
|
||||
{
|
||||
// 确认与跳过共用位置:选中显示确认、隐藏跳过;未选中显示跳过(仅首页场景)
|
||||
if (submitButton != null)
|
||||
{
|
||||
submitButton.gameObject.SetActive(_hasSelection);
|
||||
submitButton.onClick.RemoveAllListeners();
|
||||
submitButton.onClick.AddListener(OnSubmit);
|
||||
}
|
||||
if (skipButton != null)
|
||||
{
|
||||
skipButton.gameObject.SetActive(_showSkipButton && !_hasSelection);
|
||||
}
|
||||
}
|
||||
|
||||
private async void OnSubmit()
|
||||
|
||||
@ -81,12 +81,20 @@ namespace Kill.UI.Pages
|
||||
async Task Start()
|
||||
{
|
||||
LoadingUI.Show();
|
||||
if(string.IsNullOrEmpty(DataManager.Instance.userInfo.country_code))
|
||||
// 未设置国家且本机未跳过时弹出选择国家(可跳过,跳过后不再弹出)
|
||||
if (string.IsNullOrEmpty(DataManager.Instance.userInfo.country_code)
|
||||
&& !DataManager.Instance.HasSkippedCountry())
|
||||
{
|
||||
var page = Instantiate(selectCountryPage, transform);
|
||||
page.gameObject.SetActive(true);
|
||||
page.Init(null,false);
|
||||
page.onConfirm=(code)=>{UIManager.Instance.OpenMainPage(UIManager.PageName.homePage);};
|
||||
page.Init(null, false, true);
|
||||
page.onConfirm = (code) =>
|
||||
{
|
||||
// 跳过后本机保存标记,下次进入首页不再弹出
|
||||
if (code == null)
|
||||
DataManager.Instance.SaveSkippedCountry();
|
||||
UIManager.Instance.OpenMainPage(UIManager.PageName.homePage);
|
||||
};
|
||||
LoadingUI.Hide();
|
||||
return;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user