ºÇ½ª¹¹¿·¡§
orika_ex_miyako 2021ǯ05·î24Æü(·î) 21:12:09ÍúÎò
¡¡
¡¡¤³¤Î¼ê½ç¤Ç¤Ï¡¢»þ´Ö¤ò°·¤¦¤¿¤á¤Î¾ðÊó¤ÎºîÀ®¤È¡¢¤½¤Î¾ðÊó¤ò PlayerPrefsHelper ¥¯¥é¥¹¤òÍøÍѤ·¤Æ¥»¡¼¥Ö¡¦¥í¡¼¥É¤¹¤ë½èÍý¤ò¼ÂÁõ¤·¤Þ¤¹¡£
¡¡gamebox ÍͤΤ³¤Á¤é¤Îµ»ö¤ò»²¹Í¤Ë¡¢PlayerPrefsJsonUtil ¥¯¥é¥¹¤È OfflineTimeManager ¥¯¥é¥¹¤òËÜ¥×¥í¥¸¥§¥¯¥ÈÍѤ˺îÀ®¤·¤Æ¤¤¤Þ¤¹¡£
¤¢¤ê¤¬¤È¤¦¤´¤¶¤¤¤Þ¤¹¡£
gamebox
¡Úunity¡ÛÊüÃÖ¥²¡¼¥à/¥½¥·¥ã¥²·Ï¤Î¥ª¥Õ¥é¥¤¥óÊó½·1¡Ú¥¹¥¯¥ê¥×¥È¡Û
https://www.unitygamebox.com/?p=716
¡ã¼ÂÁõ²èÁü¡¡¥»¡¼¥Ö¥Ç¡¼¥¿¤¬¤Ê¤¤¾ì¹ç¤Ë¥²¡¼¥à¤òµ¯Æ°¤·¤¿¾ì¹ç¡ä

¡ã¼ÂÁõư²è¡¡¥²¡¼¥àµ¯Æ°»þ¤Ë¡¢Á°²ó¤Î»þ´Ö¤Î¥»¡¼¥Ö¥Ç¡¼¥¿¤¬¤¢¤ë¾ì¹ç¤Ë¤Ï¥í¡¼¥É¤·¤Æ·Ð²á»þ´Ö¤Îº¹Ê¬Ãͤò»»½Ð¤¹¤ë¡ä
ư²è¥Õ¥¡¥¤¥ë¤Ø¤Î¥ê¥ó¥¯
¼ê½ç£±£²¡¡¡Ý¥²¡¼¥à³«»Ï»þ´Ö¤Èº¹Ê¬ÃͤμèÆÀ½èÍý¤Î¼ÂÁõ¡Ý
£²£±¡¥OfflineTimeManager ¥¹¥¯¥ê¥×¥È¤òºîÀ®¤¹¤ë
¡¡¿·¤·¤¤³Ø½¬ÆâÍÆ¤Ï¡¢°Ê²¼¤ÎÄ̤ê¤Ç¤¹¡£
¡¡¡¦¥·¥ó¥°¥ë¥È¥ó¥Ç¥¶¥¤¥ó¥Ñ¥¿¡¼¥ó¤Ë¤è¤ë¥¯¥é¥¹¤ÎºîÀ® ¡¡¡¦DontDestroyOnLoad ¥á¥½¥Ã¥É ¡¡¡¦const ½¤¾þ»Ò ¡¡¡¦DateTime ¹½Â¤ÂÎ¤È DateTime.Now ¥×¥í¥Ñ¥Æ¥£ ¡¡¡¦DateTime.ParseExact ¥á¥½¥Ã¥É ¡¡¡¦MonoBehaviour.OnApplicationQuit ¥á¥½¥Ã¥É ¡¡¡¦Math.Round ¥á¥½¥Ã¥É¤È MidpointRounding Îóµó(enum)·¿ ¡¡¡¦TimeSpan ¹½Â¤ÂÎ¤È TimeSpan.TotalSeconds ¥×¥í¥Ñ¥Æ¥£
¡¡¥²¡¼¥àÆâ¤Ë»þ´Ö¤Î³µÇ°¤ò¼è¤êÆþ¤ì¤ë¤¿¤á¤Ë¡¢ÀìÍѤΥ¯¥é¥¹¤òºîÀ®¤·¤Æ¡¢»þ´Ö¤Î¾ðÊó¤ò´ÉÍý¤µ¤»¤ë¤³¤È¤ò¹Í¤¨¤Þ¤¹¡£
¡¡»þ´Ö¤ò¥»¡¼¥Ö¡¢¥í¡¼¥É¤¹¤ëµ¡Ç½¤Ï PlayerPrefsHelper ¥¯¥é¥¹¤Ë¥á¥½¥Ã¥É¤ò½àÈ÷¤·¤Æ¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢
¤³¤Î¥¯¥é¥¹¤Ç¤ÏŬµ¹¤Ê¥¿¥¤¥ß¥ó¥°¤Ç¤½¤ì¤é¤Î½èÍý¤ò¼Â¹Ô¤·¤Æ¡¢»þ´Ö¤Î¥»¡¼¥Ö¤È¥í¡¼¥É¤ò¼Â¹Ô¤Ç¤¤ë¤è¤¦¤Ë¤·¤Æ¤¤¤¤Þ¤¹¡£
¤Ç¤¹¤¬¤Þ¤º¤Ï¡¢¥²¡¼¥à¤ò½ªÎ»¤·¤¿¤È¤¤È¡¢¥²¡¼¥à¤ò³«»Ï¤·¤¿¤È¤¤Ë¡¢¤³¤Î½èÍý¤ò¼ÂÁõ¤·¤Æ¡¢Æ°ºî¤ò¸¡¾Ú¤·¤Æ¤ª¤¤Þ¤¹¡£
¡¡¥á¥½¥Ã¥É¤Ï¡¢µ½Ò¤·¤¿¥¹¥¯¥ê¥×¥ÈÆâ¤Ç¤Î¤ß¼Â¹Ô¤µ¤ì¤ëÌõ¤Ç¤Ï¤Ê¤¯¡¢½àÈ÷¤µ¤¨¤·¤Æ¤ª¤±¤Ð¡¢Â¾¤Î¥¹¥¯¥ê¥×¥È¤«¤é¤Ç¤â¼Â¹Ô¤Ç¤¤ë¤³¤È¤ò˺¤ì¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£
¤Ä¤Þ¤ê¡¢»öÁ°¤Ë¡¢¹Í¤¨¤Æ¤¢¤ë½èÍý¤òµ½Ò¤·¤Æ¤ª¤¤¤Æ¡¢¤¢¤È¤Ï¡¢¤½¤ì¤ò¼Â¹Ô¤¹¤ë¡¢¤È¤¤¤¦·Á¼°¤¬´ðËÜŪ¤Ê½èÍý¤Ë¤Ê¤ê¤Þ¤¹¡£
¡¡Ìò³ä¤òÍ¿¤¨¤é¤ì¤¿¥¯¥é¥¹¤Ë¡¢¤½¤Î¥¯¥é¥¹¤¬¹Ô¤¦¤Ù¤½èÍý¤ò¥á¥½¥Ã¥É¤È¤·¤Æ½àÈ÷¤·¡¢¤½¤ì¤ò¡¢É¬ÍפʤȤ¤Ë¡¢É¬Íפʥ¹¥¯¥ê¥×¥È¤«¤é¼Â¹Ô¤¹¤ë¡¢¤È¤¤¤¦¥×¥í¥°¥é¥à¤Ë¤ª¤±¤ë½èÍý¤Îή¤ì¤òÄϤߤޤ·¤ç¤¦¡£
¡¡º£²ó¤Ï¤Þ¤º¡¢¥²¡¼¥à¤Î½ªÎ»»þ¤Ë¡¢¤½¤Î¤È¤¤Î»þ´Ö¤ò¥»¡¼¥Ö¤¹¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£
¤Þ¤¿¡¢¥²¡¼¥à¤ò¼Â¹Ô¤·¤¿¤È¤¤Ë¡¢¥»¡¼¥Ö¤µ¤ì¤Æ¤¤¤ë»þ´Ö¤Î¥Ç¡¼¥¿¤¬¤¢¤ë¾ì¹ç¤Ë¤Ï¡¢¤½¤Î¥Ç¡¼¥¿¤ò¥í¡¼¥É¤¹¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£
¡¡¤³¤Î£²¤Ä¤ÎÃͤ¬¼èÆÀ¤Ç¤¤ë¤³¤È¤Ë¤è¤ê¡¢¡Ö¸½ºß¤Î¥²¡¼¥à¤Îµ¯Æ°»þ´Ö - Á°²ó¤Î¥²¡¼¥à¤Î½ªÎ»»þ´Ö¡×¤È¤¤¤¦·×»»¼°¤òºîÀ®¤¹¤ë¤³¤È¤¬½ÐÍè¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
²¿»ö¤â»öÁ°¤Î½àÈ÷¤È¡¢¤½¤Î½àÈ÷¤ËɬÍפʾðÊó¤¬É¬Íפˤʤ롢¤È¤¤¤¦¤³¤È¤Ç¤¹¡£
¡¡¤³¤ì¤Ï¤½¤Î¤Þ¤Þ¡ÖÁ°²ó¥²¡¼¥à¤ò½ªÎ»¤·¤Æ¤«¤é¡¢º£²ó¥²¡¼¥à¤òºÆ³«¤¹¤ë¤Þ¤Ç¤Î·Ð²á¤·¤¿»þ´Ö¡×¤È¤¤¤¦º¹Ê¬ÃͤȤ·¤ÆÍøÍѤ¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
¡¡¤Þ¤º¤Ï¤³¤Î½èÍý¤ò¼ÂÁõ¤·¤Þ¤¹¡£¤³¤Î½èÍý¤¬¤¢¤ëÁ°Äó¤Ç¡¢¤ª»È¤¤¤Î»þ´Ö¤ò¬Äê¤Ç¤¤ë¤è¤¦¤Ë¤â¤Ê¤ë¤¿¤á¤Ç¤¹¡£
¡¡½èÍý¤ÎÀ߷פλ²¹ÍÎã¤Ç¤¹¡£¼«Ê¬¤Ç¹Í¤¨¤Æ¤¤¤¿¤À¤¤¤Æ¤â¹½¤¤¤Þ¤»¤ó¡£
¡ã»þ´Ö¤Î³èÍÑ¡ä
¡¡£±¡¥¥²¡¼¥à¤ò¼Â¹Ô¤¹¤ë¡£¥»¡¼¥Ö¤µ¤ì¤Æ¤¤¤ë»þ´Ö¤Î¥Ç¡¼¥¿¤¬¤Ê¤¤¾ì¹ç¤Ë¤Ï¡¢¸½ºß¤Î»þ¹ï¤ò¥²¡¼¥à»þ´Ö¤È¤·¤Æ¥»¥Ã¥È¤¹¤ë ¡¡¡¡¡¡¥»¡¼¥Ö¤µ¤ì¤Æ¤¤¤ë»þ´Ö¤Î¥Ç¡¼¥¿¤¬¤¢¤ë¾ì¹ç¤Ë¤Ï¡¢¤½¤Î¥Ç¡¼¥¿¤ò¥í¡¼¥É¤¹¤ë ¡¡£²¡¥¥í¡¼¥É¤·¤¿¡ÖÁ°²ó¥²¡¼¥à¤ò½ªÎ»¤·¤¿¤È¤¤Î»þ´Ö¡×¤È¡Ö¸½ºß¤Î»þ´Ö¡×¤È¤ò·×»»¤·¤Æ¡¢¡Öº¹Ê¬Ã͡פò»»½Ð¤¹¤ë ¡¡¡¡¡¡¤³¤Îº¹Ê¬Ãͤ¬¡ÖÁ°²ó¥²¡¼¥à¤ò½ªÎ»¤·¤Æ¤«¤é¡¢º£²ó¥²¡¼¥à¤òºÆ³«¤¹¤ë¤Þ¤Ç¤Î·Ð²á¤·¤¿»þ´Ö¡×¤È¤Ê¤ë ¡¡£³¡¥¼¡¤Î¼ê½ç¤Ç¤Ï¤³¤Î¡Ö·Ð²á¤·¤¿»þ´Ö¡×¤ò³èÍѤ·¤Æ¤¤¤¯ ¡¡£´¡¥¥²¡¼¥à¤ò½ªÎ»¤·¤¿¥¿¥¤¥ß¥ó¥°¤Ç¸½ºß¤Î»þ´Ö¤ò¥»¡¼¥Ö¤¹¤ë¡£¤³¤ÎÃͤ¬¼¡²ó¥²¡¼¥à¤ò³«»Ï¤·¤¿ºÝ¤Î¡ÖÁ°²ó¥²¡¼¥à¤ò½ªÎ»¤·¤¿¤È¤¤Î»þ´Ö¡×¤È¤Ê¤ë
¡¡¤³¤Î½èÍý¤Îή¤ì¤ò¼ÂÁõ¤·¤Þ¤¹¡£¤³¤ì¤Ï¸½ºß¤Î½ê¤Ç¤Ï¡¢¤¹¤Ù¤Æ£±¤Ä¤Î¥¯¥é¥¹Æâ¤Ë½èÍý¤òµ½Ò¤·¤Þ¤¹¡£
¡¡Á°²ó¤Ë¤Ä¤Å¤¡¢´Êñ¤Ê½èÍý¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£¤Þ¤¿¡¢¿§¡¹¤Ê¥á¥½¥Ã¥É¤äµ¡Ç½¤òÁȤ߹ç¤ï¤»¤Æ½èÍý¤òºî¤Ã¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢
¤½¤Î½èÍý¤Îºî¤êÊý¤ò³Ø½¬¤·¤Æ¤¤¤¯¤è¤¦¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£
¡¡¥ª¥Õ¥é¥¤¥ó¤Ç¤Î»þ´Ö¤Î´ÉÍý¤ò¹Ô¤¦¤¿¤á¤Î¥¯¥é¥¹¤òºîÀ®¤·¡¢¤³¤ÎÃæ¤Ç¥²¡¼¥à³«»Ï»þ¤Î»þ´Ö¤Î¥»¡¼¥Ö¡¢¥²¡¼¥à¤ò½ªÎ»¤·¤¿»þ¤Î»þ´Ö¤Î¥»¡¼¥Ö¡¢
¥²¡¼¥à³«»Ï»þ¤Ë¥»¡¼¥Ö¤µ¤ì¤Æ¤¤¤ë»þ´Ö¤¬¤¢¤ë¾ì¹ç¤Ë¤Ï¥í¡¼¥É¤È¹Ô¤¤¡¢¸½ºß¤Î»þ´Ö¤È¥»¡¼¥Ö¤µ¤ì¤Æ¤¤¤ë»þ´Ö¤È¤Îº¹Ê¬Ãͤò·Ð²á»þ´Ö¤È¤·¤Æ·×»»¤¹¤ëµ¡Ç½¤ò¥á¥½¥Ã¥É¤È¤·¤Æ¼ÂÁõ¤·¤Þ¤¹¡£
¡¡¤³¤Î¥¯¥é¥¹¤Ï¥·¥ó¥°¥ë¥È¥ó¥Ñ¥¿¡¼¥ó¤Ë¤è¤Ã¤Æ¼ÂÁõ¤¹¤ë¤³¤È¤Ç¡¢¤¤¤º¤ì¤Î¥¯¥é¥¹¤«¤é¤Ç¤â¥¢¥¯¥»¥¹¤·¤ä¤¹¤¤¥¯¥é¥¹¤È¤·¤ÆºîÀ®¤ò¹Ô¤¤¤Þ¤¹¡£
º£²ó¤Î¥²¡¼¥à¤Ç¤Ï»þ´Ö¤Î¥»¡¼¥Ö¡¦¥í¡¼¥É¤Î½èÍý¤¬ÉÑÈˤËȯÀ¸¤¹¤ë¤¿¤á¡¢³Æ¥¯¥é¥¹¤Ë OfflineTimeManager ¥¯¥é¥¹ÍѤÎÊÑ¿ô¤òÍѰդ¹¤ë¤Î¤Ç¤Ï¤Ê¤¯¡¢
OfflineTimeManager ¥¯¥é¥¹¼«ÂΤò°·¤¤¤ä¤¹¤¤¾õÂ֤ˤ·¤Æ¤ª¤¯¤³¤È·Á¤Ç¤Î±¿ÍѤò¹Í¤¨¤Æ¡¢À߷פò¹Ô¤Ã¤Æ¤¤¤Þ¤¹¡£
¡¡¥»¡¼¥Ö¤Î¥¿¥¤¥ß¥ó¥°¤Ï¡¢OnApplicationQuit ¥á¥½¥Ã¥É¤òÍøÍѤ·¤Æ¡¢¥²¡¼¥à¤ò½ªÎ»¤·¤¿ºÝ¤Ë¥»¡¼¥Ö¤ò¹Ô¤¦¤è¤¦¤Ë¤·¤Æ¤¤¤Þ¤¹¡£
¡¡¥í¡¼¥É¤Î¥¿¥¤¥ß¥ó¥°¤È¡¢¥í¡¼¥É¤·¤¿¥Ç¡¼¥¿¤Î·×»»¤ò¹Ô¤¦¥¿¥¤¥ß¥ó¥°¤Ï¥²¡¼¥à³«»Ï»þ¤¬¤¤¤¤¤Î¤Ç¡¢Awake ¥á¥½¥Ã¥É¤òÍøÍѤ·¤Æ½èÍý¤ò¸Æ¤Ó½Ð¤·¤Æ¤¤¤Þ¤¹¡£
¡¡Àè¤Û¤É¤Î½èÍý¤Îή¤ì¤Ë¡¢¥á¥½¥Ã¥É¤òÅö¤Æ¤Ï¤á¤Æ¤ª¤¤Þ¤¹¡£
¡¡£±¡¥¥²¡¼¥à¤ò¼Â¹Ô¤¹¤ë¡£¥»¡¼¥Ö¤µ¤ì¤Æ¤¤¤ë»þ´Ö¤Î¥Ç¡¼¥¿¤¬¤Ê¤¤¾ì¹ç¤Ë¤Ï¡¢¸½ºß¤Î»þ¹ï¤ò¥²¡¼¥à»þ´Ö¤È¤·¤Æ¥»¥Ã¥È¤¹¤ë¡¡//¡¡LoadOfflineDateTime ¥á¥½¥Ã¥É ¡¡¡¡¡¡¥»¡¼¥Ö¤µ¤ì¤Æ¤¤¤ë»þ´Ö¤Î¥Ç¡¼¥¿¤¬¤¢¤ë¾ì¹ç¤Ë¤Ï¡¢¤½¤Î¥Ç¡¼¥¿¤ò¥í¡¼¥É¤¹¤ë ¡¡£²¡¥¥í¡¼¥É¤·¤¿¡ÖÁ°²ó¥²¡¼¥à¤ò½ªÎ»¤·¤¿¤È¤¤Î»þ´Ö¡×¤È¡Ö¸½ºß¤Î»þ´Ö¡×¤È¤ò·×»»¤·¤Æ¡¢¡Öº¹Ê¬Ã͡פò»»½Ð¤¹¤ë¡¡¡¡¡¡¡¡//¡¡CalculateOfflineDateTimeElasped ¥á¥½¥Ã¥É ¡¡¡¡¡¡¤³¤Îº¹Ê¬Ãͤ¬¡ÖÁ°²ó¥²¡¼¥à¤ò½ªÎ»¤·¤Æ¤«¤é¡¢º£²ó¥²¡¼¥à¤òºÆ³«¤¹¤ë¤Þ¤Ç¤Î·Ð²á¤·¤¿»þ´Ö¡×¤È¤Ê¤ë ¡¡£³¡¥¼¡¤Î¼ê½ç¤Ç¤Ï¤³¤Î¡Ö·Ð²á¤·¤¿»þ´Ö¡×¤ò³èÍѤ·¤Æ¤¤¤¯ ¡¡£´¡¥¥²¡¼¥à¤ò½ªÎ»¤·¤¿¥¿¥¤¥ß¥ó¥°¤Ç¸½ºß¤Î»þ´Ö¤ò¥»¡¼¥Ö¤¹¤ë¡£¤³¤ÎÃͤ¬¼¡²ó¥²¡¼¥à¤ò³«»Ï¤·¤¿ºÝ¤Î¡ÖÁ°²ó¥²¡¼¥à¤ò½ªÎ»¤·¤¿¤È¤¤Î»þ´Ö¡×¤È¤Ê¤ë¡¡//¡¡OnApplicationQuit ¥á¥½¥Ã¥É¤È SaveOfflineDateTime ¥á¥½¥Ã¥É
OfflineTimeManager.cs
¡¡¥¹¥¯¥ê¥×¥È¤òºîÀ®¤·¤¿¤é¥»¡¼¥Ö¤·¤Þ¤¹¡£
¡¡¥·¥ó¥°¥ë¥È¥ó¤È¤Ï¡¢¿ô¿¤¯¤¢¤ë¥Ç¥¶¥¤¥ó¥Ñ¥¿¡¼¥ó¤Î£±¤Ä¤Ç¤¹¡£
¤½¤Î¥¯¥é¥¹¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤¬É¬¤º£±¤Ä¤Ç¤¢¤ë¤³¤È¤òÊݾڤ¹¤ë¥Ç¥¶¥¤¥ó¥Ñ¥¿¡¼¥ó¤Î¤³¤È¤ò¸À¤¤¤Þ¤¹¡£
¡¡OfflineTimeManager ¥¯¥é¥¹¤Ç¤Ï¡¢¤³¤Î¥·¥ó¥°¥ë¥È¥ó¤òºÎÍѤ·¤Æ¤¤¤Þ¤¹¡£
¤Ä¤Þ¤ê¡¢¥²¡¼¥àÃæ¤òÄ̤¸¤Æ¡¢¤³¤Î OfflineTimeManager ¥¯¥é¥¹¤¬£±¤Ä¤·¤«Â¸ºß¤Ç¤¤Ê¤¤¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
¼ÂÁõÎã¤ÏÊ£¿ô¤¢¤ê¤Þ¤¹¤¬¡¢°ìÈ֯ɤߤ䤹¤¤Êý¼°¤Çµ½Ò¤·¤Æ¤¤¤Þ¤¹¡£
¡ã¥·¥ó¥°¥ë¥È¥ó¥Ç¥¶¥¤¥ó¥Ñ¥¿¡¼¥ó¤Î¥¯¥é¥¹¤ÎºîÀ®ÊýË¡¡ä
public static OfflineTimeManager instance;¡¡¡¡// ¥¯¥é¥¹Ì¾¤ÈƱ̾¤Î·¿¤ò static ¤ÇÀë¸À¤¹¤ë private void Awake() { if (instance == null) { instance = this; DontDestroyOnLoad(gameObject); } else { Destroy(gameObject); } }
¡¡¥Ý¥¤¥ó¥È¤Ï¡¢¼«Ê¬¼«¿È¤Î OfflineTimeManager ·¿¤ò static ½¤¾þ»ÒÉÕ¤¤Î instance ÊÑ¿ô¤È¤·¤ÆÀë¸À¤·¤Æ¤¤¤ë¤³¤È¤Ç¤¹¡£
¤³¤Î instance ÊÑ¿ô¤¬ OfflineTimeManager ¥¯¥é¥¹¼«¿È¤¬ÂåÆþ¤µ¤ì¤¿¾ðÊó¤È¤·¤ÆÍøÍѤ¹¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£
¡¡Awake ¥á¥½¥Ã¥É¤òÍøÍѤ·¤Æ¡¢instance ÊÑ¿ô¤¬ null (¶õ¤Ã¤Ý) ¤Ç¤¢¤ë¾ì¹ç¤Ë¤Ï¡¢OfflineTimeManager ¥¯¥é¥¹(this)¤òÂåÆþ¤·¤Þ¤¹¡£
¼¡¤Î DontDestroyOnLoad ¥á¥½¥Ã¥É¤Ï Unity ¤¬ÍѰդ·¤Æ¤¤¤ë¥á¥½¥Ã¥É¤Ç¡¢°ú¿ô¤Ë»ØÄꤵ¤ì¤¿¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ï¥·¡¼¥óÁ«°Ü¤ò¤·¤Æ¤âÇ˲õ¤µ¤ì¤Æ¤Ê¤¤¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤Ê¤ê¤Þ¤¹¡£
¤³¤Î DontDestroyOnLoad ¥á¥½¥Ã¥É¤Ï¥·¥ó¥°¥ë¥È¥ó¥Ç¥¶¥¤¥ó¥Ñ¥¿¡¼¥ó¤Ë¤¹¤ëºÝ¤Ë°ì½ï¤ËÍѤ¤¤é¤ì¤ë¤³¤È¤¬Â¿¤¤¤Ç¤¹¡£
¡¡¤½¤·¤Æ instance ÊÑ¿ô¤¬ null ¤Ç¤Ï¤Ê¤¤¾ì¹ç¡¢¤Ä¤Þ¤ê¡¢£²¤ÄÌܰʹߤÎÊ£¿ô¤Î OfflineTimeManager ¥¯¥é¥¹¤¬Â¸ºß¤¹¤ë¾ì¹ç¤Ë¤Ï¡¢¤½¤Î OfflineTimeManager ¥¯¥é¥¹¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ò Destroy ¤·¤Þ¤¹¡£
¤³¤Î¼ê½ç¤Ë¤è¤ê¡¢OfflineTimeManager ¥¯¥é¥¹¤¬¥¢¥¿¥Ã¥Á¤µ¤ì¤Æ¤¤¤ë¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤¬¾ï¤Ë¥Ò¥¨¥é¥ë¥¡¼¾å¤Ë£±¤Ä¤·¤«Â¸ºß¤·¤Ê¤¤¾õÂÖ¤òºî¤ê½Ð¤·¤Æ¤¤¤Þ¤¹¡£
¡¡¤³¤Î¥·¥ó¥°¥ë¥È¥ó¤Ë¤è¤Ã¤Æ¥¤¥ó¥¹¥¿¥ó¥¹¤¬£±¤Ä¤«À¸À®¤µ¤ì¤Ê¤¤¤³¤È¤¬Êݾڤµ¤ì¤Þ¤¹¤Î¤Ç¡¢
µÕÀâŪ¤Ë¹Í¤¨¤ë¤È¡¢¤³¤Î OfflineTimeManager ¥¯¥é¥¹¤Ø¤Î»²¾È¤Ï¡¢¤¤¤º¤ì¤Î¥¯¥é¥¹¤«¤é¤Ç¤¢¤Ã¤Æ¤âÊÑ¿ô¤ò²ð¤µ¤º¤Ë»²¾È¤ò¹Ô¤¨¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
¡¡Î㤨¤Ð¡¢NonPlayerCharacter ¤È¤¤¤¦¥¯¥é¥¹¤¬¤¢¤ê¡¢¤½¤Î NonPlayerCharacter ¥¯¥é¥¹¤ò»ý¤Ä¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤¬£µ¤Ä¤¢¤Ã¤¿¾ì¹ç¡¢
¡Ö¤É¤Î¡×NonPlayerCharacter ¥¯¥é¥¹¤Ç¤¢¤ë¤«¤ò³ÎÄê¤Ç¤¤Ê¤¤¤È¡¢ÂоݤȤʤë NonPlayerCharacter ¥¯¥é¥¹¤Ø¤Ï»²¾È¤Ç¤¤Þ¤»¤ó¡£
¤½¤Î¤¿¤á¡¢NonPlayerCharacter ·¿¤ÎÊÑ¿ô¤òÍѰդ·¤Æ¡¢¤½¤ÎÊÑ¿ô¤Ø»²¾È¤·¤¿¤¤ NonPlayerCharacter ¥¯¥é¥¹¤òÂåÆþ¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢
¤Ï¤¸¤á¤Æ NonPlayerCharacter ¥¯¥é¥¹¤Î¾ðÊó¤ò°·¤¦¤³¤È¤¬¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£¤³¤ì¤¬¾ðÊó¤ò°·¤¦ºÝ¤Î´ðËÜŪ¤Ê½èÍý¤Ë¤Ê¤ê¤Þ¤¹¡£
¡¡¤Ç¤¹¤¬¥·¥ó¥°¥ë¥È¥ó¤Ç¤¢¤ë OfflineTimeManager ¥¯¥é¥¹¤Î¾ì¹ç¤Ë¤Ï¡¢¤³¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤Ï¾ï¤Ë£±¤Ä¤·¤«¤Ê¤¤¤³¤È¤¬Êݾڤµ¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢
¡Ö¤É¤Î¡×¤È¤¤¤¦»ØÄê¤ÎÉôʬ¤¬ÉÔÍפˤʤê¤Þ¤¹¡£¤è¤Ã¤Æ¥¯¥é¥¹¤ÎÆÃÄ꤬¤Ç¤¤Æ¤¤¤ë¤¿¤á¡¢ÊÑ¿ô¤Ø¤ÎÂåÆþ¤¬ÉÔÍפˤʤê¤Þ¤¹¡£
OfflineTimeManager ¤È¤¤¤¦»ØÄê¤Ï¤¹¤Ê¤ï¤Á¡¢¼«Æ°Åª¤Ë¤¿¤À£±¤Ä¤Î OfflineTimeManager ¥¯¥é¥¹¤Î»²¾È¤¬¹Ô¤ï¤ì¤ë¤³¤È¤Ë¤Ê¤ë¤¿¤á¤Ç¤¹¡£
¡¡¤³¤Îµ¡Ç½¤òÍøÍѤ·¤Æ OfflineTimeManager ¥¯¥é¥¹¤òºîÀ®¤·¤Æ¤ª¤¯¤³¤È¤Ç¡¢¤É¤Î¥¯¥é¥¹¤«¤é¤Ç¤â»²¾È¤·¤ä¤¹¤¤À߷פˤ·¤Æ¤ª¤¤Þ¤¹¡£
¡¡¿·¤·¤¤¥·¡¼¥ó¤ò¥í¡¼¥É¤·¤ÆÁ«°Ü¤ò¤¹¤ë¤È¤¤Ë¡¢°ú¿ô¤Ç»ØÄꤷ¤Æ¤¤¤ëÂоݤΥ²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤Ä¤¤¤Æ¤ÏÇË´þ¤µ¤ì¤Ê¤¤¤è¤¦¤Ë¤¹¤ë¥á¥½¥Ã¥É¤Ç¤¹¡£
¤½¤Î¤¿¤á¼¡¤Î¥·¡¼¥ó¤ËÁ«°Ü¤·¤Æ¤â¡¢¤³¤Î¥¹¥¯¥ê¥×¥È¤¬¥¢¥¿¥Ã¥Á¤µ¤ì¤Æ¤¤¤ë¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ÏÁ°¤Î¥·¡¼¥ó¤«¤éÇË´þ¤µ¤ì¤º¤Ë»Ä¤ê³¤±¤Þ¤¹¡£
¡¡Â¿¤¯¤Î¾ì¹ç¡¢º£²ó¤Î¤è¤¦¤Ë¥·¥ó¥°¥ë¥È¥ó¥¯¥é¥¹¤Ç°ì½ï¤ËÍøÍѤµ¤ì¡¢¥¹¥¯¥ê¥×¥È¤¬¥¢¥¿¥Ã¥Á¤µ¤ì¤Æ¤¤¤ë¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¼«¿È¤òÂоݤ˼è¤ê¤Þ¤¹¡£(¥¢¥¿¥Ã¥Á¤µ¤ì¤Æ¤¤¤ë¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤¬ÇË´þ¤µ¤ì¤Ê¤¯¤Ê¤ë)
DontDestroyOnLoad(gameObject);
»²¹Í¥µ¥¤¥È¡¡
Unity¸ø¼°¥¹¥¯¥ê¥×¥È¥ê¥Õ¥¡¥ì¥ó¥¹
Object.DontDestroyOnLoad
https://docs.unity3d.com/ja/current/ScriptReferenc...
¡¡Àë¸À¥Õ¥£¡¼¥ë¥É¤Ë¤ÆÀë¸À¤ò¹Ô¤¦ÊÑ¿ô¤òÄê¿ô¤È¤·¤ÆÍøÍѤ¹¤ë¾ì¹ç¡¢ÊÑ¿ô¤ÎÀë¸À»þ const ½¤¾þ»Ò¤ò°ì½ï¤ËÀë¸À¤¹¤ë¤³¤È¤Ç¥²¡¼¥àÆâ¤ÇÊѲ½¤ÎȯÀ¸¤·¤Ê¤¤ÃͤȤ·¤ÆÀë¸À¤Ç¤¤Þ¤¹¡£
¤³¤ÎÃͤÏÂåÆþ½èÍý¤ò¤¹¤ë¤³¤È¤¬½ÐÍè¤Ê¤¯¤Ê¤ê¤Þ¤¹¤Î¤Ç¡¢¾ï¤Ë¸ÇÄꤵ¤ì¤¿Ãͤò»²¾È¤¹¤ë¾ì¹ç¤Ê¤É¤ËÊØÍø¤Ç¤¹¡£
private const string SAVE_KEY_DATETIME = "OfflineDateTime";¡¡¡¡¡¡// »þ´Ö¤ò¥»¡¼¥Ö¡¦¥í¡¼¥É¤¹¤ëºÝ¤ÎÊÑ¿ô¡£Äê¿ô¤È¤·¤ÆÀë¸À¤¹¤ë private const string FORMAT = "yyyy/MM/dd HH:mm:ss";¡¡¡¡ ¡¡¡¡¡¡¡¡// Æü»þ¤Î¥Õ¥©¡¼¥Þ¥Ã¥È»ØÄêÍÑ
¡¡º£²ó¤Î¥±¡¼¥¹¤Ç¤Ïʸ»úÎó¤ò£²¤Ä const ½¤¾þ»Ò¤ÇÀë¸À¤·¤Æ»²¾È¤·¤Æ¤¤¤Þ¤¹¡£
ʸ»úÎó¤Î¥¨¥é¡¼¤Ï¥³¥ó¥Ñ¥¤¥ë»þ¤Ëɽ¼¨¤µ¤ì¤Þ¤»¤ó¤Î¤Ç¡¢¸í¤ê¤Ëµ¤¤Å¤¯¤³¤È¤¬Æñ¤·¤¯¤Ê¤ê¤Þ¤¹¡£
¤½¤¦¤¤¤Ã¤¿Ê¸»úÎó¤ÎÆþÎϸí¤ê¤ò̤Á³¤ËËɤ°¤¿¤á¤Î¼êË¡¤Î£±¤Ä¤Ç¤¹¡£
¡¡C# ¤Ë¤Ï»þ´Ö¤òɽ¤¹¤¿¤á¤Î¾ðÊó¤È¤·¤Æ DateTime(¥Ç¥¤¥È¥¿¥¤¥à) ¹½Â¤ÂΤ¬ÍѰդµ¤ì¤Æ¤¤¤Þ¤¹¡£
DateTime ¹½Â¤ÂΤò»ÈÍѤ¹¤ë¤¿¤á¤Ë¤Ï½é´ü²½¤¬É¬Íפˤʤê¤Þ¤¹¡£¥³¥ó¥¹¥È¥é¥¯¥¿¡¦¥á¥½¥Ã¥É¤Ï¤¢¤ê¤Þ¤¹¤¬¡¢ÍøÍѤ·¤Ê¤¯¤Æ¤â¥¨¥é¡¼¤Ë¤Ê¤ê¤Þ¤»¤ó¡£
¤½¤Î¾ì¹ç¤Ïµ¬ÄêÃͤ¬°ÅÌÛŪ¤Ë³ä¤êÅö¤Æ¤é¤ì¤Þ¤¹¡£(DateTime ¹½Â¤ÂΤε¬ÄêÃÍ¤Ï 1/1/0001 12:00:00 AM ¤Ç¤¹¡£)
[Header("Á°²ó¥²¡¼¥à¤ò»ß¤á¤¿»þ¤Ë¥»¡¼¥Ö¤·¤Æ¤¤¤ë»þ´Ö")] public DateTime oldDateTime = new DateTime();¡¡¡¡// new ¥¡¼¥ï¡¼¥É¤òÍøÍѤ·¤Æ½é´ü²½¡£¥³¥ó¥¹¥È¥é¥¯¥¿¤ËÂåÆþ¤·¤Æ¤¤¤Ê¤¤¤Î¤Ç¡¢µ¬ÄêÃͤ¬ÂåÆþ¤µ¤ì¤ë
¡¡¤³¤Îµ¡Ç½¤ò³èÍѤ·¤Æ¡¢»þ´Ö¤ò¥»¡¼¥Ö¤·¤¿¤ê¡¢»²¾È¤·¤Æ¤¤¤Þ¤¹¡£
¡¡¸½ºß¤Î»þ¹ï¤Ï¡¢DateTime.Now ¥×¥í¥Ñ¥Æ¥£¤Ç¼èÆÀ¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
¤³¤Î¤È¤¡¢ToString ¥á¥½¥Ã¥É¤È¡¢°ú¿ô¤Ëɽ¼¨¥Õ¥©¡¼¥Þ¥Ã¥È·Á¼°¤ò»ØÄꤹ¤ë¤³¤È¤Ç¡¢¸½ºß»þ¹ï¤ò»²¾È¤·¤¿¤ê¡¢É½¼¨¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
¡¡Debug.Log("º£¤Î»þ´Ö : " + DateTime.Now.ToString(FORMAT)); // FORMAT ÊÑ¿ô¤Ë¤Ï¡¢É½¼¨·Á¼°¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¡£const ½¤¾þ»Ò¤ÎÊÑ¿ô¤ò³Îǧ¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
¡ã½ÐÎÏ·ë²Ì¡ä
¡¡2021/04/01 10:15:30 // "yyyy/MM/dd HH:mm:ss" ¥Õ¥©¡¼¥Þ¥Ã¥È¤Ç»ØÄꤷ¤Æ¤¤¤ë·Á¼°¤Çɽ¼¨¤µ¤ì¤ë
»²¹Í¥µ¥¤¥È
MicroSoft
DateTime ¹½Â¤ÂÎ
https://docs.microsoft.com/ja-jp/dotnet/api/system...
.NET Column ÍÍ
¡ÚC#¤Î´ðÁáÛDateTime¤Ë¤è¤ë¸½ºß»þ¹ï¤Î¼èÆÀ¤È¥Õ¥©¡¼¥Þ¥Ã¥È¤ÎÈæ³Ó
https://www.fenet.jp/dotnet/column/language/2152/
¡¡DateTime ¹½Â¤ÂΤλý¤Ä¥á¥½¥Ã¥É¤Î£±¤Ä¤Ç¤¹¡£¥Ñ¡¼¥¹¡¦¥¤¥°¥¶¥¯¥È¤ÈÆÉ¤ß¤Þ¤¹¡£
»ØÄꤷ¤¿Ê¸»úÎó·Á¼°¤ÎÆüÉդȻþ¹ï¤òÅù²Á¤Î DateTime ¤ÎÃͤËÊÑ´¹¤¹¤ë¥á¥½¥Ã¥É¤Ç¤¹¡£
ʸ»úÎó·Á¼°¤Î½ñ¼°¤Ï¡¢»ØÄꤷ¤¿½ñ¼°¤È´°Á´¤Ë°ìÃפ¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
// ¥í¡¼¥É¤·¤¿Ê¸»úÎó¤ò DateTime ·¿¤Ë·¿ÊÑ´¹¤·¤Æ»þ´Ö¤ò¼èÆÀ oldDateTime = DateTime.ParseExact(oldDateTimeString, FORMAT, null);
¡¡º£²ó¤Î¥±¡¼¥¹¤Ç¤Ï¡¢»þ¹ï¤ÎÃͤǤ¢¤ë DateTime ¤Î¾ðÊó¤ò FORMAT("yyyy/MM/dd HH:mm:ss")ÊÑ¿ô¤Î·Á¼°¤Çʸ»úÎó¤È¤·¤Æ¥»¡¼¥Ö¤·¤Æ¤¤¤Þ¤¹¡£
¤½¤Î¤¿¤á¡¢¤½¤ÎÃͤòƱ¤¸ FORMAT ·Á¼°¤ò»ØÄꤹ¤ë¤³¤È¤Ç¡¢Ê¸»úÎó¤Î¾ðÊó¤ò DateTime ¤ÎÃͤËÊÑ´¹¤·¤Æ¡Ö»þ´Ö¤ÎÃ͡פȤ·¤ÆÉü¸µ¤¹¤ë½èÍý¤ò¼ÂÁõ¤·¤Æ¤¤¤Þ¤¹¡£
»²¹Í¥µ¥¤¥È
MicroSoft
DateTime.ParseExact ¥á¥½¥Ã¥É
https://docs.microsoft.com/ja-jp/dotnet/api/system...
SAMURAI ENGINEER Blog ÍÍ
¡ÚC#ÆþÌç¡ÛÆü»þ¤Îʸ»úÎó¤òDateTime¤ËÊÑ´¹¤¹¤ëÊýË¡(Parse/ParseExact)
https://www.sejuku.net/blog/51183
¡¡Unity ¥¨¥Ç¥£¥¿¡¼¤Ç¥²¡¼¥à¤ÎºÆÀ¸¤òÄä»ß¤·¤¿¥¿¥¤¥ß¥ó¥°¤Ç¼«Æ°Åª¤Ë¼Â¹Ô¤µ¤ì¤ë¥³¡¼¥ë¥Ð¥Ã¥¯·¿¤Î¥á¥½¥Ã¥É¤Ç¤¹¡£
üËö¤Î¾ì¹ç¤Ë¤Ï¥²¡¼¥à¤ò½ªÎ»¤·¤¿¥¿¥¤¥ß¥ó¥°¤Ç¼«Æ°Åª¤Ë¸Æ¤Ó½Ð¤µ¤ì¤Æ¡¢µ½Ò¤µ¤ì¤Æ¤¤¤ë½èÍý¤ò¼Â¹Ô¤·¤Þ¤¹¡£
/// <summary> /// ¥²¡¼¥à¤¬½ªÎ»¤·¤¿¤È¤¤Ë¼«Æ°Åª¤Ë¸Æ¤Ð¤ì¤ë /// </summary> private void OnApplicationQuit() { // ¸½ºß¤Î»þ´Ö¤Î¥»¡¼¥Ö SaveOfflineDateTime(); Debug.Log("¥²¡¼¥àÃæÃÇ¡£»þ´Ö¤Î¥»¡¼¥Ö´°Î»"); }
¡¡Â¿¤¯¤ÎÊüÃÖ·¿¤Î¥²¡¼¥à¤Î¾ì¹ç¡¢¥²¡¼¥à¤ò¼Â¹ÔÃæ°Ê³°¤Ç¤â»þ´Ö¤ò·×»»¤Ç¤¤ë¾õÂ֤ˤ·¤Æ¤ª¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢
º£²ó¤Î¥±¡¼¥¹¤Î¾ì¹ç¤â¡¢¥²¡¼¥à¤ò½ªÎ»¤·¤¿¥¿¥¤¥ß¥ó¥°¤Ç¡¢¸½ºß¤Î»þ¹ï¤ò¥»¡¼¥Ö¤·¤ÆÃÖ¤¯¤è¤¦¤Ë¤·¤Þ¤¹¡£
¡¡¤³¤ÎÃͤò¡¢¼¡²ó¥²¡¼¥à¤òµ¯Æ°¤·¤¿ºÝ¤Ë¼èÆÀ¤·¡¢¥²¡¼¥à¤òµ¯Æ°¤·¤¿»þ´Ö¤È¡¢¥»¡¼¥Ö¤µ¤ì¤Æ¤¤¤ë»þ´Ö¤È¤òÈæ¤Ù¤ë¤³¤È¤Ç
¤É¤Î°Ì¤Î»þ´Ö¤¬·Ð²á¤·¤Æ¤¤¤ë¤Î¤«¡¢º¹Ê¬Ãͤò¼èÆÀ¤Ç¤¤ë¤è¤¦¤Ë¤·¤Æ¤¤¤Þ¤¹¡£
¡¡Math.Round ¥á¥½¥Ã¥É¤Ï°ú¿ô¤Ë»ØÄꤷ¤¿Ãͤò¡¢¾®¿ôÅÀ¤ÎÃͤòºÇ¤â¶á¤¤À°¿ôÃͤÎ10¿ÊÃͤ˴ݤá¤ë¥á¥½¥Ã¥É¤Ç¤¹¡£
Mathf ¥¯¥é¥¹¤Ï float ·¿¡¢Math ¥¯¥é¥¹¤Ï double ·¿¤Î½èÍý¤ò¼Â¹Ô¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
¡¡°ú¿ô¤Î¥ª¡¼¥Ð¡¼¥í¡¼¥É¤¬Â¿¤¤¥á¥½¥Ã¥É¤Ç¤¹¡£º£²ó¤Ï¡¢¼¡¤Î°ú¿ô¤òÍøÍѤ·¤Æ¤¤¤Þ¤¹¡£
Round(Double, Int32, MidpointRounding)
// ·Ð²á»þ´Ö¤òÉäˤ¹¤ë(Math.Round ¥á¥½¥Ã¥É¤òÍøÍѤ·¤Æ¡¢double ·¿¤ò int ·¿¤ËÊÑ´¹¡£¾®¿ôÅÀ¤Ï 0 ¤Î°Ì¤Ç¡¢¿ôÃͤδݤá¤Î½èÍý¤Î»ØÄê¤Ï ToEven(¿ôÃͤ¬ 2 ¤Ä¤Î¿ôÃͤÎÃæ´Ö¤Ë°ÌÃÖ¤¹¤ë¤È¤¤Ë¡¢ºÇ¤â¶á¤¤¶ö¿ô¤ÎÃÍ) ¤ò»ØÄê) elaspedTime = (int)Math.Round(dateTimeElasped.TotalSeconds, 0, MidpointRounding.ToEven);
¡¡º£²ó¤Î¥±¡¼¥¹¤Ç¤Ï Round ¥á¥½¥Ã¥É¤òÍøÍѤ·¤Æ¡¢double ·¿¤Î dateTimeElasped.TotalSeconds ¥×¥í¥Ñ¥Æ¥£¤ÎÃÍ(Âè1°ú¿ô)¤ò¡¢¾®¿ôÅÀÂè 0 °Ì(Âè2°ú¿ô)¤ÎÉôʬ¤Ç´Ý¤á½èÍý¤ò¹Ô¤¤¤Þ¤¹¡£
Ãͤò´Ý¤á¤ëºÝ¤ÎÃæ´ÖÃͤλØÄê¤Ë¤Ï MidpointRounding Îóµó·¿¤Î»ý¤Ä ToEven ¤ò»ØÄê(Âè3°ú¿ô)¤·¤Æ¡¢ºÇ¤â¶á¤¤¶ö¿ô¤ÎÃͤ˴ݤá½èÍý¤ò¤·¤¿Ãͤò int ·¿¤È¤·¤Æ¼èÆÀ¤·¤Æ¤¤¤Þ¤¹¡£
»²¹Í¥µ¥¤¥È
MicroSoft
Math.Round ¥á¥½¥Ã¥É
https://docs.microsoft.com/ja-jp/dotnet/api/system...
DelftStack ÍÍ
C# ¤Ç Double ¤ò Int ¤ËÊÑ´¹¤¹¤ë
https://www.delftstack.com/ja/howto/csharp/covert-...
MicroSoft
MidpointRounding Îóµó·¿
https://docs.microsoft.com/ja-jp/dotnet/api/system... ToEven
¡¡»þ´Ö¤Î´Ö³Ö¤òɽ¤¹µ¡Ç½¤Ç¤¹¡£DateTime ¹½Â¤ÂÎÆ±»Î¤ò·×»»¤·¤¿·ë²Ì¤ò TimeSpan ¹½Â¤ÂΤËÂåÆþ¤¹¤ë¤³¤È¤Ë¤è¤ê¡¢
£²¤Ä¤ÎÃͤδ֤ˡ¢¤É¤Î°Ì¤Î»þ´Ö¤Î´Ö³Ö¤¬¤¢¤ë¤Î¤«¤ò»»½Ð·ë²Ì¤ò¼èÆÀ¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
¡¡TotalSeconds ¥×¥í¥Ñ¥Æ¥£¤òÍøÍѤ¹¤ë¤³¤È¤Ë¤è¤ê¡¢À°¿ôÉô¤È¾®¿ôÉô¤«¤éÀ®¤ëÉÿô¤Çɽ¤µ¤ì¤ë¡¢¸½ºß¤Î TimeSpan ¹½Â¤ÂΤÎÃͤò¼èÆÀ¤·¤Þ¤¹¡£
Î㤨¤Ð¡¢TimeSpan ¤ÎÃͤ¬ 00:04:28 ¤Ê¤Î¤Ç¤¢¤ë¤Ê¤é¤Ð¡¢ 268 ÉäȤ¤¤¦Ãͤò¼èÆÀ¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
// ·Ð²á¤·¤¿»þ´Ö¤Îº¹Ê¬(¤³¤Î»þÅÀ¤Ç¤Ï¡¢yyyy/MM/dd HH:mm:ss ¤ÎÃͤˤʤäƤ¤¤ë) TimeSpan dateTimeElasped = currentDateTime - oldDateTime; // ·Ð²á»þ´Ö¤òÉäˤ¹¤ë(Math.Round ¥á¥½¥Ã¥É¤òÍøÍѤ·¤Æ¡¢double ·¿¤ò int ·¿¤ËÊÑ´¹¡£¾®¿ôÅÀ¤Ï 0 ¤Î°Ì¤Ç¡¢¿ôÃͤδݤá¤Î½èÍý¤Î»ØÄê¤Ï ToEven(¿ôÃͤ¬ 2 ¤Ä¤Î¿ôÃͤÎÃæ´Ö¤Ë°ÌÃÖ¤¹¤ë¤È¤¤Ë¡¢ºÇ¤â¶á¤¤¶ö¿ô¤ÎÃÍ) ¤ò»ØÄê) elaspedTime = (int)Math.Round(dateTimeElasped.TotalSeconds, 0, MidpointRounding.ToEven);
»²¹Í¥µ¥¤¥È
MicroSoft
TimeSpan ¹½Â¤ÂÎ
https://docs.microsoft.com/ja-jp/dotnet/api/system...
MicroSof
TimeSpan.TotalSeconds ¥×¥í¥Ñ¥Æ¥£
https://docs.microsoft.com/ja-jp/dotnet/api/system...
£±£±¡¥OfflineTimeManager ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òºîÀ®¤·¤Æ¡¢OfflineTimeManager ¥¹¥¯¥ê¥×¥È¤ò¥¢¥¿¥Ã¥Á¤·¡¢ÀßÄê¤ò¹Ô¤¦ 
¡¡¥Ò¥¨¥é¥ë¥¡¼¤Î¶õ¤¤¤Æ¤¤¤ë¾ì½ê¤Ç±¦¥¯¥ê¥Ã¥¯¤ò¤·¤Æ¥á¥Ë¥å¡¼¤ò³«¤¡¢Create Empty ¤òÁªÂò¤·¤Æ¡¢¿·¤·¤¤¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òºîÀ®¤·¤Þ¤¹¡£
̾Á°¤ò OfflineTimeManager ¤ËÊѹ¹¤·¡¢ºîÀ®¤·¤¿ OfflineTimeManager ¥¹¥¯¥ê¥×¥È¤ò OfflineTimeManager ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë¥É¥é¥Ã¥°¥¢¥ó¥É¥É¥í¥Ã¥×¤·¤Æ¥¢¥¿¥Ã¥Á¤·¤Þ¤¹¡£
¥Ò¥¨¥é¥ë¥¡¼²èÁü

¡¡¥¢¥¿¥Ã¥Á¤ò¹Ô¤Ã¤¿¤é¡¢É¬¤º¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤ò³Îǧ¤·¤Æ¥¢¥¿¥Ã¥Á¤Ç¤¤Æ¤¤¤ë¤³¤È¤ò³Îǧ¤·¤Þ¤¹¡£
¥¤¥ó¥¹¥Ú¥¯¥¿¡¼²èÁü

¡¡¥¢¥µ¥¤¥ó¤¹¤ë¾ðÊó¤Ï¤¢¤ê¤Þ¤»¤ó¤Î¤Ç¡¢¤³¤ì¤ÇÀßÄê¤Ï´°Î»¤Ç¤¹¡£
¡¡¥²¡¼¥à¤ò¼Â¹Ô¤·¤¿ºÝ¤Ë¼«Æ°Åª¤Ë»þ´Ö¤ò¼èÆÀ¤·¤Æ¡¢¥²¡¼¥à¤ò½ªÎ»¤¹¤ë¤È¡¢¤½¤Î»þ¤Î»þ´Ö¤ò¥»¡¼¥Ö¤¹¤ë½èÍý¤ò³Îǧ¤·¤Þ¤¹¡£
¥¹¥¯¥ê¥×¥ÈÆâ¤Ç¤Î½èÍý¤Ç¤¢¤ë¤¿¤á¡¢Í×½ê¤Ëµ½Ò¤·¤Æ¤¤¤ë Debug.Log ¥á¥½¥Ã¥É¤òÍê¤ê¤Ë³Îǧ¤·¤Æ¤¤¤¤Þ¤¹¡£
¡¡ÁÛÄꤷ¤Æ¤¤¤ë¥¿¥¤¥ß¥ó¥°¤Ç¡¢Console ¥Ó¥å¡¼¤Ë Debug.Log ¥á¥½¥Ã¥É¤¬¼Â¹Ô¤µ¤ì¤ë¤«¤ò¤ß¤Æ¤¯¤À¤µ¤¤¡£
¡¡¤½¤Î¸å¡¢ºÆÅÙ¥²¡¼¥à¤ò¼Â¹Ô¤·¤Þ¤¹¡£Á°²ó¤Î¥²¡¼¥à¤Î½ªÎ»»þ¤Ë¥»¡¼¥Ö¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï¡¢
¼«Æ°Åª¤Ë¥í¡¼¥É¤ò¹Ô¤¤¡¢¸½ºß¤Î»þ¹ï¤È¡¢¥»¡¼¥Ö¤·¤¿»þ¹ï¤È¤Îº¹Ê¬ÃͤȤʤë»þ´Ö¤òÉÿô¤Ç·×»»¤¹¤ë½èÍý¤¬¼Â¹Ô¤µ¤ì¤ì¤ÐÀ®¸ù¤Ç¤¹¡£
¡ã¼ÂÁõ²èÁü¡¡¥»¡¼¥Ö¥Ç¡¼¥¿¤¬¤Ê¤¤¾ì¹ç¤Ë¥²¡¼¥à¤òµ¯Æ°¤·¤¿¾ì¹ç¡ä

¡ã¼ÂÁõư²è¡¡¥²¡¼¥àµ¯Æ°»þ¤Ë¡¢Á°²ó¤Î»þ´Ö¤Î¥»¡¼¥Ö¥Ç¡¼¥¿¤¬¤¢¤ë¾ì¹ç¤Ë¤Ï¥í¡¼¥É¤·¤Æ·Ð²á»þ´Ö¤Îº¹Ê¬Ãͤò»»½Ð¤¹¤ë¡ä
ư²è¥Õ¥¡¥¤¥ë¤Ø¤Î¥ê¥ó¥¯
¡¡²¿²ó¤â¥²¡¼¥à¤Îµ¯Æ°¤È½ªÎ»¤ò·«¤êÊÖ¤·¤Æ¡¢Àµ¾ï¤Ëưºî¤·¤Æ¤¤¤ë¤«¤ò³Îǧ¤·¤Æ¤ª¤¤Þ¤¹¡£
¡¡¥»¡¼¥Ö¥Ç¡¼¥¿¤Î¤Ê¤¤¾õÂÖ¤«¤é³«»Ï¤·¤¿¤¤¾ì¹ç¤Ë¤Ï¡¢PlayerPrefsHelper ¥¯¥é¥¹¤Î¥»¡¼¥Ö¥Ç¡¼¥¿¤òºï½ü¤¹¤ë¥á¥½¥Ã¥É¤ò¼Â¹Ô¤¹¤ë¤«¡¢
Unity ¥¨¥Ç¥£¥¿¡¼¤Î Edit => Clear All PlayerPrefs ¤òÁªÂò¤·¤Æ¥»¡¼¥Ö¥Ç¡¼¥¿¤òºï½ü¤·¤Æ»î¤·¤Æ¤¯¤À¤µ¤¤¡£
¡¡°Ê¾å¤Ç¤³¤Î¼ê½ç¤Ï½ªÎ»¤Ç¤¹¡£
¡¡
¡¡¼¡¤Ï¡¡¼ê½ç£±£³¡¡¡Ý¥²¡¼¥à´ÉÍý¥¯¥é¥¹¤Î¼ÂÁõ¡Ý¡¡¤Ç¤¹¡£
- ¥«¥Æ¥´¥ê¡§
- ¿Ê³Ø/¥¹¥¯¡¼¥ë
- ¥×¥í¥°¥é¥ß¥ó¥°
¥³¥á¥ó¥È¤ò¤«¤¯