add customize frame logic

This commit is contained in:
kimura 2022-05-10 17:13:26 +09:00
parent 723a0acef5
commit 5ec071fdf7
3 changed files with 182 additions and 2 deletions

View File

@ -394,6 +394,9 @@ GameObject:
serializedVersion: 6
m_Component:
- component: {fileID: 7097874909301393275}
- component: {fileID: 3725718940147004211}
- component: {fileID: 686629440844100179}
- component: {fileID: 1336297028302711179}
m_Layer: 5
m_Name: Frame_summary
m_TagString: Untagged
@ -408,7 +411,7 @@ RectTransform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7197059603880083336}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
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_Children:
@ -421,8 +424,74 @@ RectTransform:
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_SizeDelta: {x: 276, y: 336}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &3725718940147004211
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7197059603880083336}
m_CullTransparentMesh: 0
--- !u!114 &686629440844100179
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7197059603880083336}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ee012d4774ae943b49c2443232200135, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
--- !u!114 &1336297028302711179
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7197059603880083336}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 0
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: 686629440844100179}
m_OnClick:
m_PersistentCalls:
m_Calls: []
--- !u!1 &7345703844887354918
GameObject:
m_ObjectHideFlags: 0
@ -1034,6 +1103,7 @@ GameObject:
serializedVersion: 6
m_Component:
- component: {fileID: 9136989296408743451}
- component: {fileID: 9016739176424896693}
m_Layer: 5
m_Name: Customize_Frame
m_TagString: Untagged
@ -1063,6 +1133,28 @@ RectTransform:
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &9016739176424896693
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9136989296408743460}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 8b5434b76402401d827edbe3bb915bdf, type: 3}
m_Name:
m_EditorClassIdentifier:
button: {fileID: 1336297028302711179}
lockObject: {fileID: 9136989295277789513}
unlockObject: {fileID: 9136989295645579405}
purchasedObject: {fileID: 9136989296137671042}
selectedObject: {fileID: 7345703844887354918}
selectedFrameObject: {fileID: 1107814534788598305}
unselectedObject: {fileID: 1101663351218072558}
unlockLevelText: {fileID: 2013268342774345650}
priceText: {fileID: 9136989294777611129}
iconTarget: {fileID: 1400898384260248944}
--- !u!1001 &5025614481332414584
PrefabInstance:
m_ObjectHideFlags: 0

View File

@ -0,0 +1,85 @@
using System;
using UniRx;
using UnityEngine;
using UnityEngine.UI;
namespace MyGame.Scenes.marketing.Scripts
{
public enum ShopCustomizeItemState
{
Lock,
Unlock,
Purchased,
Selected,
}
public class ShopCustomizeItem : MonoBehaviour
{
[SerializeField] private Button button;
[SerializeField] private GameObject lockObject;
[SerializeField] private GameObject unlockObject;
[SerializeField] private GameObject purchasedObject;
[SerializeField] private GameObject selectedObject;
[SerializeField] private GameObject selectedFrameObject;
[SerializeField] private GameObject unselectedObject;
[SerializeField] private Text unlockLevelText;
[SerializeField] private Text priceText;
[SerializeField] private Transform iconTarget;
private IObservable<Unit> ClickObservable => button.OnClickAsObservable().TakeUntilDestroy(this);
public IObservable<Unit> PurchaseObservable => purchaseSubject;
private readonly Subject<Unit> purchaseSubject = new Subject<Unit>();
public IObservable<Unit> SelectObservable => selectSubject;
private readonly Subject<Unit> selectSubject = new Subject<Unit>();
public IObservable<Unit> DetailObservable => detailSubject;
private readonly Subject<Unit> detailSubject = new Subject<Unit>();
private readonly ReactiveProperty<ShopCustomizeItemState> itemState = new ReactiveProperty<ShopCustomizeItemState>();
private void Start()
{
itemState.AddTo(this);
purchaseSubject.AddTo(this);
selectSubject.AddTo(this);
detailSubject.AddTo(this);
itemState.Subscribe(state =>
{
lockObject.SetActive(state == ShopCustomizeItemState.Lock);
unlockObject.SetActive(state == ShopCustomizeItemState.Unlock);
purchasedObject.SetActive(state == ShopCustomizeItemState.Purchased || state == ShopCustomizeItemState.Selected);
selectedObject.SetActive(state == ShopCustomizeItemState.Selected);
selectedFrameObject.SetActive(state == ShopCustomizeItemState.Selected);
unselectedObject.SetActive(state == ShopCustomizeItemState.Purchased);
}).AddTo(this);
ClickObservable.ThrottleFirst(TimeSpan.FromSeconds(.2f)).Subscribe(_ =>
{
switch (itemState.Value)
{
case ShopCustomizeItemState.Lock:
break;
case ShopCustomizeItemState.Unlock:
purchaseSubject.OnNext(Unit.Default);
break;
case ShopCustomizeItemState.Purchased:
selectSubject.OnNext(Unit.Default);
break;
case ShopCustomizeItemState.Selected:
detailSubject.OnNext(Unit.Default);
break;
default:
throw new ArgumentOutOfRangeException();
}
}).AddTo(this);
}
public void SetState(ShopCustomizeItemState state)
{
itemState.Value = state;
}
public void SetData(ShopCustomizeData customizeData)
{
unlockLevelText.text = customizeData.level.ToString();
priceText.text = customizeData.price.ToString();
iconTarget.DestroyAllChildrens();
// Instantiate(iconTarget);
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 8b5434b76402401d827edbe3bb915bdf
timeCreated: 1652155635