¡¡
¡¡DialogBase¥¯¥é¥¹¤ò½¤Àµ¤·¤Þ¤¹¡£
¡¡UnityAction<ItemData> ·¿¤Î¥Õ¥£¡¼¥ë¥É onCloseActionItemData ÊÑ¿ô¤ÏÁ°²óºîÀ®¤·¤¿ onCloseAction ÊÑ¿ô¤ÈƱÍͤˡ¢³°Éô¥¯¥é¥¹¤Î½èÍý¤òÊÝ»ý¤¹¤ë¤¿¤á¤Ë»ÈÍѤµ¤ì¤Þ¤¹¡£
¤³¤³¤Ë½èÍý¤òÊÝ»ý¤·¤Æ¤ª¤¯¤³¤È¤Ç¡¢Ç¤°Õ¤Î¥¿¥¤¥ß¥ó¥°¤Ç½èÍý¤ò¼Â¹Ô¤Ç¤¤Þ¤¹¡£º£²ó¤Ï ItemData ·¿¤Î°ú¿ô¤òÄêµÁ¤·¤Æ¤¤¤Þ¤¹¡£
¡¡º£²ó¤âľÀÜŪ¤Ë³°Éô¥¯¥é¥¹¤Î»²¾È¤ò»ý¤¿¤º¤Ë½èÍý¤¬¼Â¹Ô¤Ç¤¤ë¤¿¤á¡¢°Í¸´Ø·¸¤¬¤Ê¤¤(Á·ë¹ç)¾õÂÖ¤¬°Ý»ý¤Ç¤¤Æ¤¤¤Þ¤¹¡£
<= ¥¯¥ê¥Ã¥¯¤¹¤ë¤È³«¤¤Þ¤¹
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Events;
using DG.Tweening;
using UniRx;
public class DialogBase : MonoBehaviour, IDialogClose
{
protected UnityAction onCloseAction;¡¡¡¡// ³°Éô¥¯¥é¥¹(º£²ó¤Ï DailogTest)¤Î½èÍý(¥á¥½¥Ã¥É¤Î»²¾È)¤òÊÝ»ý¤¹¤ë¥Ç¥ê¥²¡¼¥È
////*¡¡¿·¤·¤¤ÊÑ¿ô¤ò£±¤ÄÄɲá¡*////
protected UnityAction<ItemData> onCloseActionItemData;
////*¡¡¤³¤³¤Þ¤Ç¡¡*////
protected Canvas dialogCanvas;¡¡¡¡¡¡¡¡¡¡// ¤³¤Î¥À¥¤¥¢¥í¥°¤òÇÛÃÖ¤·¤¿ Canvas ¤Î¾ðÊó
protected float fadeDuration = 1.0f; // ¥À¥¤¥¢¥í¥°¤òɽ¼¨/Èóɽ¼¨¤¹¤ëºÝ¤Ë»þ´Ö
#pragma warning disable 0649
[SerializeField] protected CanvasGroup canvasGroupDialog;
[SerializeField] protected Button btnClose;
[SerializeField] protected Ease fadeEase = Ease.InQuart;
#pragma warning restore 0649
/// <summary>
/// Dialog ¤ò»È¤¤¤Þ¤ï¤¹¾ì¹ç¤Ë¤Ï¥¤¥ó¥¹¥¿¥ó¥¹¸å¤ËºÇ½é¤Ë£±²ó¤À¤±¼Â¹Ô¤¹¤ë
/// °ú¿ô¤Ç³°Éô¥¯¥é¥¹¤Î½èÍý¤ò¼õ¤±¼è¤ë¤³¤È¤Ç°Í¸´Ø·¸¤ò»ý¤¿¤Ê¤¯¤ÆºÑ¤à
/// </summary>
/// <param name="closeAction"></param>
public virtual void SetUp(UnityAction closeAction) {
if(!transform.parent.TryGetComponent(out dialogCanvas))
{
Debug.Log("dialogCanvas ¼èÆÀ½ÐÍè¤Þ¤»¤ó");
return;
}
// UnityAction ¤Ë³°Éô¥¯¥é¥¹¤Î½èÍý(¥á¥½¥Ã¥É¤Î»²¾È)¤òÊÝ»ý¤·¤Æ¤ª¤¯
onCloseAction = closeAction;
// ¥À¥¤¥¢¥í¥°¤òÊĤ¸¤ë¥Ü¥¿¥ó¤Ë½èÍý¤òÅÐÏ¿¡
//btnClose.onClick.AddListener(() => Hide());
// ¥À¥¤¥¢¥í¥°¤òÊĤ¸¤ë¥Ü¥¿¥ó¤Ë½èÍý¤òÅÐÏ¿¢
btnClose.OnClickAsObservable()
.ThrottleFirst(TimeSpan.FromSeconds(1.0f))
.Subscribe(_ => Hide())
.AddTo(this);
// TODO ¾¤Ë¤â£±²ó¤À¤±ÀßÄꤷ¤¿¤¤¤â¤Î¤òÄɲÃ
}
////*¡¡¿·¤·¤¤¥á¥½¥Ã¥É¤ÎÄɲá¡*////
/// <summary>
/// ¥ª¡¼¥Ð¡¼¥í¡¼¥Éµ¡Ç½¤òÍøÍÑ
/// Dialog ¤ò»È¤¤¤Þ¤ï¤¹¾ì¹ç¤Ë¤Ï¥¤¥ó¥¹¥¿¥ó¥¹¸å¤ËºÇ½é¤Ë£±²ó¤À¤±¼Â¹Ô¤¹¤ë
/// °ú¿ô¤Ç³°Éô¥¯¥é¥¹¤Î½èÍý¤ò¼õ¤±¼è¤ë¤³¤È¤Ç°Í¸´Ø·¸¤ò»ý¤¿¤Ê¤¯¤ÆºÑ¤à
/// </summary>
/// <param name="closeActionItem"></param>
public virtual void SetUp(UnityAction<ItemData> closeActionItem) {
if(!transform.parent.TryGetComponent(out dialogCanvas))
{
Debug.Log("dialogCanvas ¼èÆÀ½ÐÍè¤Þ¤»¤ó");
return;
}
// ³°Éô¥¯¥é¥¹¤Î½èÍý¤òÊÝ»ý¤·¤Æ¤ª¤¯
onCloseActionItemData = closeActionItem;
// ¥À¥¤¥¢¥í¥°¤òÊĤ¸¤ë¥Ü¥¿¥ó¤Ë½èÍý¤òÅÐÏ¿¡
//btnClose.onClick.AddListener(() => Hide());
// ¥À¥¤¥¢¥í¥°¤òÊĤ¸¤ë¥Ü¥¿¥ó¤Ë½èÍý¤òÅÐÏ¿¢
btnClose.OnClickAsObservable()
.ThrottleFirst(TimeSpan.FromSeconds(1.0f))
.Subscribe(_ => Hide())
.AddTo(this);
// TODO ¾¤Ë¤â£±²ó¤À¤±ÀßÄꤷ¤¿¤¤¤â¤Î¤òÄɲÃ
}
////*¡¡¤³¤³¤Þ¤Ç¡¡*////
/// <summary>
/// ³°Éô¥¯¥é¥¹¤«¤é¼Â¹Ô
/// ¥À¥¤¥¢¥í¥°¤òɽ¼¨
/// </summary>
public virtual void Show() {
dialogCanvas.enabled = true;
canvasGroupDialog.alpha = 0;
// ɽ¼¨½àÈ÷¤äºÆÀßÄ꤬¤¢¤ë¾ì¹ç
OnEnterOpen();
// ¥À¥¤¥¢¥í¥°¤òɽ¼¨¤¹¤ë¥¢¥Ë¥á³«»Ï
PlayOpenDialog();
}
/// <summary>
/// ¥À¥¤¥¢¥í¥°Æâ¤Îɽ¼¨½àÈ÷¤äºÆÀßÄ꤬¤¢¤ë¾ì¹ç¤ËÍøÍѤ¹¤ë
/// </summary>
protected virtual void OnEnterOpen() {
// TODO ºÆÀßÄê¤Î½èÍý¤¬É¬Íפʾì¹ç¤Ë½èÍý¤òÄɲÃ
}
/// <summary>
/// ¥À¥¤¥¢¥í¥°¤òɽ¼¨¤¹¤ë¥¢¥Ë¥á
/// </summary>
protected virtual void PlayOpenDialog() {
canvasGroupDialog
.DOFade(1.0f, fadeDuration)
.SetEase(fadeEase)
.SetLink(gameObject)
.OnComplete(() => OnExitOpen());
}
/// <summary>
/// ¥À¥¤¥¢¥í¥°É½¼¨¸å¤Ë¼Â¹Ô¤·¤Æ¤ª¤¯½èÍý
/// </summary>
protected virtual void OnExitOpen() {
// TODO ³«¤¤¤¿¤È¤¤ÎµóÆ°
}
/// <summary>
/// ¥Ü¥¿¥ó¤«¤é¼Â¹Ô
/// ¥À¥¤¥¢¥í¥°¤òÊĤ¸¤ë
/// </summary>
/// <returns></returns>
public virtual bool Hide() {
// Èóɽ¼¨¤Ë¤¹¤ëÁ°¤Ë¤ä¤Ã¤Æ¤ª¤¯½èÍý
OnEnterClose();
// ¥À¥¤¥¢¥í¥°¤òÈóɽ¼¨¤Ë¤¹¤ë¥¢¥Ë¥á³«»Ï
PlayCloseDialog();
return true;
}
/// <summary>
/// Èóɽ¼¨¤Ë¤¹¤ëÁ°¤Ë¤ä¤Ã¤Æ¤ª¤¯½èÍý
/// </summary>
protected virtual void OnEnterClose() {
// ³°Éô¥¯¥é¥¹¤ÇÅÐÏ¿¤·¤¿³°Éô¤Î½èÍý¤ò¼Â¹Ô
¡¡¡¡¡¡¡¡// ¥À¥¤¥¢¥í¥°¤¬ÊĤ¸»Ï¤á¤¿¥¿¥¤¥ß¥ó¥°¤Ç¡¢¤¹¤°¤Ë³°Éô½èÍý¤ò¼Â¹Ô¤·¤¿¤¤¾ì¹ç
¡¡¡¡¡¡¡¡// OnExitClose() ¥á¥½¥Ã¥É¤Ç¤Ï¤Ê¤¯¡¢¤³¤Î¥¿¥¤¥ß¥ó¥°¤Ç¼Â¹Ô¤·¤¿¤¤¤È¤¤ËÍøÍѤ¹¤ë¤Î¤Ç¡¢¤³¤³¤Ç¤Ï¥³¥á¥ó¥È¥¢¥¦¥È
//onCloseAction?.Invoke();
////*¡¡¿·¤·¤¤½èÍý¤ÎÄɲÃ(OnExitClose() ¥á¥½¥Ã¥É¤Ç¤Ï¤Ê¤¯¡¢¤³¤Î¥¿¥¤¥ß¥ó¥°¤Ç¼Â¹Ô¤·¤¿¤¤¤È¤¤ËÍøÍѤ¹¤ë)¡¡*////
¡¡¡¡¡¡¡¡// ¥À¥¤¥¢¥í¥°¤¬ÊĤ¸»Ï¤á¤¿¥¿¥¤¥ß¥ó¥°¤Ç¡¢¤¹¤°¤Ë³°Éô½èÍý¤ò¼Â¹Ô¤·¤¿¤¤¾ì¹ç
¡¡¡¡¡¡¡¡// OnExitClose() ¥á¥½¥Ã¥É¤Ç¤Ï¤Ê¤¯¡¢¤³¤Î¥¿¥¤¥ß¥ó¥°¤Ç¼Â¹Ô¤·¤¿¤¤¤È¤¤ËÍøÍѤ¹¤ë¤Î¤Ç¡¢¤³¤³¤Ç¤Ï¥³¥á¥ó¥È¥¢¥¦¥È
//onCloseActionItemData?.Invoke(new(1));
////*¡¡¤³¤³¤Þ¤Ç¡¡*////
}
/// <summary>
/// ¥À¥¤¥¢¥í¥°¤òÈóɽ¼¨¤Ë¤¹¤ë¥¢¥Ë¥á
/// </summary>
protected virtual void PlayCloseDialog() {
canvasGroupDialog
.DOFade(0, fadeDuration)
.SetEase(fadeEase)
.SetLink(gameObject)
.OnComplete(() => OnExitClose());
}
/// <summary>
/// ¥À¥¤¥¢¥í¥°Èóɽ¼¨¸å¤Ë¼Â¹Ô¤·¤Æ¤ª¤¯½èÍý
/// </summary>
protected virtual void OnExitClose() {
dialogCanvas.enabled = false;
// TODO ¾¤Ë¤â¤¢¤ì¤ÐÄɲÃ
////*¡¡Á°²ó¤Î½èÍý¤ÎÄä»ß¤È¡¢¿·¤·¤¤½èÍý¤ÎÄɲá¡*////
¡¡¡¡¡¡¡¡// ¥À¥¤¥¢¥í¥°¤¬ÊĤ¸½ª¤ï¤Ã¤Æ¤«¤é³°Éô½èÍý¤ò¼Â¹Ô¤·¤¿¤¤¾ì¹ç
//onCloseAction?.Invoke();¡¡¡¡//¡¡¢«¡¡¡ù¡¡¥³¥á¥ó¥È¥¢¥¦¥È¤¹¤ë
¡¡
¡¡¡¡¡¡¡¡// ItemData ¤ò¥¤¥ó¥¹¥¿¥ó¥¹¤·¤¿¾å¤Ç°ú¿ô¤Ç»ØÄꤷ¤Æ¡¢³°Éô½èÍý¤ò¼Â¹Ô
onCloseActionItemData?.Invoke(new(1));¡¡¡¡//¡¡¢«¡¡¿ô»ú¤òÊѤ¨¤ë¤È¡¢ÊѤ¨¤¿¿ô»ú¤¬³°Éô¥¯¥é¥¹¤ËÆϤ¤Þ¤¹¡£»î¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£
////*¡¡¤³¤³¤Þ¤Ç¡¡*////
}
}
¡¡¿·¤·¤¯£²¤ÄÌܤΠSetUp¥á¥½¥Ã¥É¤òºîÀ®¤·¡¢¤³¤Á¤é¤Ï UnityAction<ItemData> ·¿¤Î°ú¿ô¤ò¼õ¤±¼è¤ê¤Þ¤¹¡£
¤³¤Î¥á¥½¥Ã¥É¤â³°Éô¥¯¥é¥¹¤«¤é¼Â¹Ô¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢¤³¤ì¤Ë¤è¤ê¡¢
°Í¸´Ø·¸¤ò»ý¤¿¤º¤Ë³°Éô¥¯¥é¥¹¤Î½èÍý¤ò¥À¥¤¥¢¥í¥°Æâ¤Ç¼Â¹Ô¤Ç¤¤Þ¤¹¡£
¡¡¤Þ¤¿¡¢º£²ó¤â OnEnterClose() ¥á¥½¥Ã¥É¤È OnExitClose() ¥á¥½¥Ã¥É¤Ë¤Æ¡¢³°Éô¥¯¥é¥¹¤Î½èÍý¤ò¼Â¹Ô¤¹¤ë½èÍý¤ò½ñ¤¤¤Æ¤¤¤Þ¤¹¡£
º£²ó¤Ï°ú¿ô¤ò»ý¤Ã¤Æ¤¤¤ë¥á¥½¥Ã¥É¤ò¼Â¹Ô¤·¤Æ¤¤¤ë¤¿¤á¡¢
¥À¥¤¥¢¥í¥°Æâ¤ÇºîÀ®¤·¤¿¾ðÊó¤ò¡¢³°Éô¥¯¥é¥¹¤ËÄ󶡤¹¤ë¤³¤È¤¬²Äǽ¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£
¡¡¡¡¡¡¡¡// ItemData ¤ò¥¤¥ó¥¹¥¿¥ó¥¹¤·¤¿¾å¤Ç°ú¿ô¤Ç»ØÄꤷ¤Æ¡¢³°Éô½èÍý¤ò¼Â¹Ô
onCloseActionItemData?.Invoke(new(1));¡¡¡¡//¡¡¢«¡¡¿ô»ú¤òÊѤ¨¤ë¤È¡¢ÊѤ¨¤¿¿ô»ú¤¬³°Éô¥¯¥é¥¹¤ËÆϤ¤Þ¤¹¡£»î¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£
¡¡Á°²ó¤ÈƱ¤¸¤è¤¦¤Ë¡¢³°Éô¥¯¥é¥¹¤Î½èÍý¤¬¤É¤¦¤¤¤Ã¤¿½èÍý¤Ê¤Î¤«¤Ë¹ç¤ï¤»¤Æ¡¢¼Â¹Ô¤¹¤ë¥¿¥¤¥ß¥ó¥°¤ò»ØÄꤹ¤ë¤³¤È¤Ç½ÀÆð¤ËÂбþ¤¬²Äǽ¤Ç¤¹¡£
¤³¤ì¤¬¥Ç¥ê¥²¡¼¥È¤ò³èÍѤ·¤¿½èÍý¤ÎÂ礤ʥá¥ê¥Ã¥È¤Ë¤Ê¤ê¤Þ¤¹¡£