処理追加 CityIcon.cs

This commit is contained in:
kimura 2022-09-26 11:24:19 +09:00
parent e016e0e6ad
commit 9a2bfe931e
4 changed files with 67 additions and 3 deletions

View File

@ -130,7 +130,12 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 94d22fb4b30547a7a7d613555c1fd8da, type: 3}
m_Name:
m_EditorClassIdentifier:
icon: {fileID: 498716710821908371}
cityIcon: {fileID: 498716710821908371}
cityId: 1
pin: {fileID: 498716709849429620}
lockIcon: {fileID: 498716710438122542}
notifyIcon: {fileID: 8888824836673155761}
animator: {fileID: 2247642576509783911}
--- !u!1 &498716710438122542
GameObject:
m_ObjectHideFlags: 0
@ -571,6 +576,12 @@ RectTransform:
type: 3}
m_PrefabInstance: {fileID: 498716710500312605}
m_PrefabAsset: {fileID: 0}
--- !u!1 &8888824836673155761 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 9056949049436837036, guid: f8587bb162250fa48947d648e934781e,
type: 3}
m_PrefabInstance: {fileID: 498716710500312605}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &1360594892428573506
PrefabInstance:
m_ObjectHideFlags: 0
@ -701,3 +712,9 @@ RectTransform:
type: 3}
m_PrefabInstance: {fileID: 1360594892428573506}
m_PrefabAsset: {fileID: 0}
--- !u!95 &2247642576509783911 stripped
Animator:
m_CorrespondingSourceObject: {fileID: 995566939256566821, guid: 1dd4681cca844994eab02ced553ab174,
type: 3}
m_PrefabInstance: {fileID: 1360594892428573506}
m_PrefabAsset: {fileID: 0}

View File

@ -173,6 +173,11 @@ PrefabInstance:
propertyPath: m_AnchoredPosition.y
value: -59.7
objectReference: {fileID: 0}
- target: {fileID: 2308183619134864621, guid: 68b944bf4894305448bb16375de74dbc,
type: 3}
propertyPath: cityId
value: 2
objectReference: {fileID: 0}
- target: {fileID: 8503390566567986980, guid: 68b944bf4894305448bb16375de74dbc,
type: 3}
propertyPath: m_AnchoredPosition.x

View File

@ -143,6 +143,11 @@ PrefabInstance:
propertyPath: m_AnchoredPosition.y
value: -60.2
objectReference: {fileID: 0}
- target: {fileID: 2308183619134864621, guid: 68b944bf4894305448bb16375de74dbc,
type: 3}
propertyPath: cityId
value: 3
objectReference: {fileID: 0}
- target: {fileID: 8888824836673155761, guid: 68b944bf4894305448bb16375de74dbc,
type: 3}
propertyPath: m_IsActive

View File

@ -5,18 +5,55 @@ using UnityEngine;
namespace MyGame.Scenes.WorldMap.Scripts
{
public enum CityState
{
UnRelease,
Lock,
Release
}
public class CityIcon : MonoBehaviour
{
[SerializeField] private Transform icon;
[SerializeField] private Transform cityIcon;
[SerializeField] private int cityId;
private readonly ReactiveProperty<CityState> cityState = new();
public int CityId => cityId;
public IObservable<Unit> OnClick =>
(icon.GetComponent<ObservableEventTrigger>() ?? icon.gameObject.AddComponent<ObservableEventTrigger>())
(cityIcon.GetComponent<ObservableEventTrigger>() ?? cityIcon.gameObject.AddComponent<ObservableEventTrigger>())
.OnPointerClickAsObservable()
.AsUnitObservable();
[SerializeField] private GameObject pin;
[SerializeField] private GameObject lockIcon;
[SerializeField] private GameObject notifyIcon;
[SerializeField] private Animator animator;
private void Start()
{
cityState.AddTo(this);
cityState.Subscribe(x =>
{
pin.SetActive(cityState.Value == Scripts.CityState.UnRelease);
lockIcon.SetActive(cityState.Value == Scripts.CityState.Lock);
cityIcon.gameObject.SetActive(cityState.Value is Scripts.CityState.Lock or Scripts.CityState.Release);
}).AddTo(this);
}
public void SetState(CityState state) => cityState.Value = state;
public void SetNotify(bool active) => notifyIcon.SetActive(active);
public void PlayAnimation(Action onComplete = null)
{
animator.gameObject.SetActive(true);
animator.Play("WorldMap_staging", 0, 0f);
Observable.Timer(TimeSpan.Zero, TimeSpan.FromSeconds(.3f))
.Select(_ => animator.GetCurrentAnimatorStateInfo(0))
.Where(state => state.normalizedTime >= 1f && state.IsName("WorldMap_staging"))
.Take(1)
.Subscribe(_ =>
{
onComplete?.Invoke();
}).AddTo(this);
}
}
}