¡¡Start ¥á¥½¥Ã¥ÉÆâ¤Ë¥Ç¥Ð¥Ã¥°ÍѤνèÍý¤òÄɲõ½Ò¤·¡¢Esc ¥¡¼¤ò²¡¤¹¤³¤È¤Ç¥À¥¤¥¢¥í¥°¤¬³«¤¤¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï¶¯À©Åª¤ËÈóɽ¼¨¤Ë¤¹¤ë½èÍý¤ò¹Ô¤Ã¤Æ¤¤¤Þ¤¹¡£
¡¡¥À¥¤¥¢¥í¥°Â¦¤ËÅϤ¹°ú¿ôÉդΡ¡CloseDialogAction ¥á¥½¥Ã¥É¤Ë¤Ä¤¤¤Æ¤Ï¡¢½èÍýÆâÉô¤ò½¤Àµ¤·¡¢
°ú¿ô¤ÎÃͤˤè¤Ã¤Æɽ¼¨¤µ¤ì¤ë¥í¥°¤òʬ´ô¤¹¤ë½èÍý¤ËÊѹ¹¤·¤Æ¤¤¤Þ¤¹¡£
¶¯À©Åª¤Ë¥À¥¤¥¢¥í¥°¤òÈóɽ¼¨¤Ë¤¹¤ë¾ì¹ç¤Ë¤Ï°ú¿ô¤ÎÃͤ¬ null ¤È¤·¤ÆÅϤäƤ¯¤ë¤¿¤á¡¢°ú¿ô¤Ë¤è¤Ã¤Æ¥í¥°É½¼¨¤¬ÊѲ½¤¹¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
<= ¥¯¥ê¥Ã¥¯¤¹¤ë¤È³«¤¤Þ¤¹
using System.Collections;
using System.Collections.Generic;
using UniRx;
using UniRx.Triggers;
using UnityEngine;
public class DialogManager : MonoBehaviour
{
#pragma warning disable 0649
[SerializeField] private DialogBase dialogPrefab;
[SerializeField] private Transform dialogTran;
#pragma warning restore 0649
private DialogBase dialogInstance; // À¸À®ºÑ¤Î¥À¥¤¥¢¥í¥°¤òÂåÆþ¤·¤ÆÊÝ»ý¤·¤Æ¤ª¤¯
void Start() {
this.UpdateAsObservable()
.Where(_ => Input.GetKeyDown(KeyCode.A))
.ThrottleFirst(System.TimeSpan.FromSeconds(1.0f))
.Subscribe(_ => OpenDialog());
////*¡¡½èÍý¤òÄɲä·¤Þ¤¹¡¡*////
this.UpdateAsObservable()
.Where(_ => Input.GetKeyDown(KeyCode.Escape))
.Where(_ => dialogInstance)
.ThrottleFirst(System.TimeSpan.FromSeconds(1.0f))
.Subscribe(_ =>
{
if (dialogInstance.Hide()) {
Debug.Log($"Android üËö¤Î BackKey ¤¬²¡¤µ¤ì¤¿¤Î¤Ç¡¢¥À¥¤¥¢¥í¥°¤òÊĤ¸¤Þ¤¹ {dialogInstance.name}");
}
});
////*¡¡¤³¤³¤Þ¤Ç¡¡*////
}
/// <summary>
/// ¥À¥¤¥¢¥í¥°É½¼¨
/// </summary>
private void OpenDialog() {
// ¥À¥¤¥¢¥í¥°¤¬À¸À®¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç
if (dialogInstance == null) {
// À¸À®¡¢½é´üÀßÄê
dialogInstance = Instantiate(dialogPrefab, dialogTran, false);
¡¡¡¡¡¡¡¡¡¡¡¡// °ú¿ô¤È¤·¤Æ UnityAction ·¿¤Î¥Ç¥ê¥²¡¼¥È¤ò³èÍѤ·¡¢CloseDialogAction ¥á¥½¥Ã¥É¤ò¥À¥¤¥¢¥í¥°Â¦¤ËÅϤ¹
//dialogInstance.SetUp(() => CloseDialogAction());
¡¡¡¡¡¡¡¡¡¡¡¡dialogInstance.SetUp(itemData => CloseDialogAction(itemData)); // °ú¿ôÉդξì¹ç
}
// ¥À¥¤¥¢¥í¥°É½¼¨
dialogInstance.Show();
}
/// <summary>
/// ¥À¥¤¥¢¥í¥°¤¬Èóɽ¼¨¤Ë¤Ê¤Ã¤¿¤È¤¤Ë¼Â¹Ô¤µ¤ì¤ë¥³¡¼¥ë¥Ð¥Ã¥¯
/// </summary>
private void CloseDialogAction() {
Debug.Log("¥À¥¤¥¢¥í¥°¤¬Èóɽ¼¨¤Ë¤Ê¤ê¤Þ¤·¤¿");
}
/// <summary>
/// ¥À¥¤¥¢¥í¥°¤¬Èóɽ¼¨¤Ë¤Ê¤Ã¤¿¤È¤¤Ë¼Â¹Ô¤µ¤ì¤ë¥³¡¼¥ë¥Ð¥Ã¥¯
/// °ú¿ôÉÕ
/// </summary>
/// <param name="chooseItemData"></param>
private void CloseDialogAction(ItemData chooseItemData) {
////*¡¡½èÍý¤ò½¤Àµ¤·¤Þ¤¹¡¡*////
if (chooseItemData == null) {
Debug.Log("ÁªÂò¤µ¤ì¤¿¾ðÊó¤Ï¤¢¤ê¤Þ¤»¤ó");
return;
}
Debug.Log($"Dialog Æâ¤ÇÁªÂò¤µ¤ì¤¿¾ðÊó¤¬ÆϤ¤Þ¤·¤¿ : {chooseItemData.id}");
// ¾åµ¤Î if ʸʬ´ô½èÍý¤ò»°¹à±é»»»Ò¤Çµ½Ò¤·¤¿¾ì¹ç
Debug.Log(chooseItemData != null ? $"Dialog Æâ¤ÇÁªÂò¤µ¤ì¤¿¾ðÊó¤¬ÆϤ¤Þ¤·¤¿ : {chooseItemData.id}" : "ÁªÂò¤µ¤ì¤¿¾ðÊó¤Ï¤¢¤ê¤Þ¤»¤ó");
////*¡¡¤³¤³¤Þ¤Ç¡¡*////
}
}
¡¡¥¡¼¥Ü¡¼¥É¤Î¡ÖEscape¡×¥¡¼¤ò²¡¤¹¤È¥À¥¤¥¢¥í¥°¤òÊĤ¸¤ë¤¿¤á¤Î¥È¥ê¥¬¡¼¤òÀßÄꤷ¤Þ¤¹¡£
dialogInstance ¤¬Â¸ºß¤·¡¢¥À¥¤¥¢¥í¥°¤òÈóɽ¼¨¤Ë¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¾ì¹ç¡¢¥À¥¤¥¢¥í¥°¤òÊĤ¸¤Þ¤¹¡£
¤½¤·¤ÆÈóɽ¼¨¤¹¤ë¤È Hide ¥á¥½¥Ã¥É¤ÎÌá¤êÃͤ¬Ê֤뤳¤È¤Ë¤è¤ê¡¢¥í¥°¤Îɽ¼¨½èÍý¤ò³¤±¤Æ¼Â¹Ô¤¹¤ë»ÅÁȤߤˤʤäƤ¤¤Þ¤¹¡£
¡¡CloseDialogAction¥á¥½¥Ã¥É¤Ï¡¢¥À¥¤¥¢¥í¥°¤¬Èóɽ¼¨¤Ë¤Ê¤Ã¤¿¤È¤¤Ë¸Æ¤Ó½Ð¤µ¤ì¤ë¥³¡¼¥ë¥Ð¥Ã¥¯½èÍý¤Ç¤¹¡£
°ú¿ô¤Ê¤·¤Î¥Ð¡¼¥¸¥ç¥ó¤È¡¢ItemData ¤ò°ú¿ô¤È¤·¤Æ¼õ¤±¼è¤ë¥Ð¡¼¥¸¥ç¥ó¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
¤³¤Î¥á¥½¥Ã¥ÉÆâ¤Ç¡¢¥À¥¤¥¢¥í¥°¤¬Èóɽ¼¨¤Ë¤Ê¤Ã¤¿¤³¤È¤ò¥í¥°¤ËµÏ¿¤·¤Æ¤¤¤Þ¤¹¡£
¡¡º£²ó¤Î½¤Àµ¤Ë¤è¤ê¡¢ItemData ¤¬ null ¤Ç¤Ê¤¤¾ì¹ç¡¢ItemData ¤Î id ¥Õ¥£¡¼¥ë¥É¤ò¥í¥°¤Ëɽ¼¨¤·¤Þ¤¹¡£
null ¤Î¾ì¹ç¤Ï¡ÖÁªÂò¤µ¤ì¤¿¾ðÊó¤Ï¤¢¤ê¤Þ¤»¤ó¡×¤Èɽ¼¨¤·¤Þ¤¹¡£