¡¡IEvent ¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤ò¼ÂÁõ¤·¤¿¿Æ¥¯¥é¥¹ÍѤ˥¯¥é¥¹¤òºîÀ®¤·¤Þ¤¹¡£
¤³¤Î¥¯¥é¥¹¤ÏÃê¾Ý¥¯¥é¥¹¤È¤·¤ÆºîÀ®¤·¤Æ¤ª¤¤Þ¤¹¡£
¡¡Ãê¾Ý¥¯¥é¥¹¤Ï¡¢¤¤¤º¤ì¤«¤Î¥¯¥é¥¹¤Ë·Ñ¾µ¤µ¤ì¤ëÁ°Äó¤ÇºîÀ®¤µ¤ì¤ë¥¯¥é¥¹¤Ç¤¹¡£
¤½¤¦¤¹¤ë¤³¤È¤Ç¡¢»Ò¥¯¥é¥¹¤òɬ¤ºÍÑ°Õ¤¹¤ëɬÍפ¬À¸¤Þ¤ì¤Þ¤¹¡£
¤Þ¤¿¡¢¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤ÏľÀÜ¥¢¥¿¥Ã¥Á¤Ç¤¤Ê¤¤¥¯¥é¥¹¤Ë¤Ê¤ê¤Þ¤¹¡£
EventBase.cs
<= ¥¯¥ê¥Ã¥¯¤¹¤ë¤È³«¤¤Þ¤¹¡£
using System;
using UnityEngine;
using Cysharp.Threading.Tasks;
using UniRx;
using UnityEngine.UI;
/// <summary>
/// ¥Ð¥È¥ë¡¢Ãµº÷¡¢¥·¥ç¥Ã¥×¡¢¥ì¥Ù¥ë¥¢¥Ã¥×¤Ê¤É¤Î¥¤¥Ù¥ó¥ÈÁ´È̤ËÍøÍѤ¹¤ëÃê¾Ý¿Æ¥¯¥é¥¹
/// </summary>
public abstract class EventBase : MonoBehaviour, IEvent // abstract
{
public abstract UniTask ExecuteEvent();
[SerializeField] private Button btnEvent;
public IObservable<Unit> OnClickEventButtonObserbable => btnEvent.OnClickAsObservable();
}
¡¡Ãê¾Ý¥¯¥é¥¹¤Ë¤ÏÃê¾Ý¥á¥½¥Ã¥É¤òÍÑ°Õ¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
Ãê¾Ý¥á¥½¥Ã¥É¤Ï¡¢»Ò¥¯¥é¥¹¤Ç¤Î¥ª¡¼¥Ð¡¼¥é¥¤¥É¤ò¶¯À©¤¹¤ëµ¡Ç½¤¬¤¢¤ê¤Þ¤¹¡£
¡¡²¾Áõ¥á¥½¥Ã¥É(virtual)¤Î¾ì¹ç¡¢»Ò¥¯¥é¥¹¤Ç¤Î¥ª¡¼¥Ð¡¼¥é¥¤¥É¤ÏǤ°Õ¤Ç¤¹¤¬¡¢
Ãê¾Ý¥á¥½¥Ã¥É(abstract)¤Î¾ì¹ç¤Ï¶¯À©¤Ç¤¹¡£É¬¤º»Ò¥¯¥é¥¹¤ËÃê¾Ý¥á¥½¥Ã¥É¤òÄêµÁ¤·¡¢ÆâÍƤòµ½Ò¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£