Unity¤Ë´ØÏ¢¤¹¤ëµ­»ö¤Ç¤¹

¡¡ÊüÃÖ¥²¡¼¥à¤È¤·¤ÆɬÍפȤʤ뵡ǽ¤ò½çÈ֤˼ÂÁõ¤ò¹Ô¤Ã¤Æ¤¤¤­¤Þ¤¹¡£
¡¡
¡¡¤³¤Î¼ê½ç¤Ç¤Ï¡¢»þ´Ö¤ò°·¤¦¤¿¤á¤Î¾ðÊó¤ÎºîÀ®¤È¡¢¤½¤Î¾ðÊó¤ò 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 ¥×¥í¥Ñ¥Æ¥£



£²£±¡¥OfflineTimeManager ¥¹¥¯¥ê¥×¥È¤òºîÀ®¤¹¤ë

£±¡¥Àß·×


¡¡¥²¡¼¥àÆâ¤Ë»þ´Ö¤Î³µÇ°¤ò¼è¤êÆþ¤ì¤ë¤¿¤á¤Ë¡¢ÀìÍѤΥ¯¥é¥¹¤òºîÀ®¤·¤Æ¡¢»þ´Ö¤Î¾ðÊó¤ò´ÉÍý¤µ¤»¤ë¤³¤È¤ò¹Í¤¨¤Þ¤¹¡£

¡¡»þ´Ö¤ò¥»¡¼¥Ö¡¢¥í¡¼¥É¤¹¤ëµ¡Ç½¤Ï PlayerPrefsHelper ¥¯¥é¥¹¤Ë¥á¥½¥Ã¥É¤ò½àÈ÷¤·¤Æ¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢
¤³¤Î¥¯¥é¥¹¤Ç¤ÏŬµ¹¤Ê¥¿¥¤¥ß¥ó¥°¤Ç¤½¤ì¤é¤Î½èÍý¤ò¼Â¹Ô¤·¤Æ¡¢»þ´Ö¤Î¥»¡¼¥Ö¤È¥í¡¼¥É¤ò¼Â¹Ô¤Ç¤­¤ë¤è¤¦¤Ë¤·¤Æ¤¤¤­¤Þ¤¹¡£
¤Ç¤¹¤¬¤Þ¤º¤Ï¡¢¥²¡¼¥à¤ò½ªÎ»¤·¤¿¤È¤­¤È¡¢¥²¡¼¥à¤ò³«»Ï¤·¤¿¤È¤­¤Ë¡¢¤³¤Î½èÍý¤ò¼ÂÁõ¤·¤Æ¡¢Æ°ºî¤ò¸¡¾Ú¤·¤Æ¤ª¤­¤Þ¤¹¡£

¡¡¥á¥½¥Ã¥É¤Ï¡¢µ­½Ò¤·¤¿¥¹¥¯¥ê¥×¥ÈÆâ¤Ç¤Î¤ß¼Â¹Ô¤µ¤ì¤ëÌõ¤Ç¤Ï¤Ê¤¯¡¢½àÈ÷¤µ¤¨¤·¤Æ¤ª¤±¤Ð¡¢Â¾¤Î¥¹¥¯¥ê¥×¥È¤«¤é¤Ç¤â¼Â¹Ô¤Ç¤­¤ë¤³¤È¤ò˺¤ì¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£
¤Ä¤Þ¤ê¡¢»öÁ°¤Ë¡¢¹Í¤¨¤Æ¤¢¤ë½èÍý¤òµ­½Ò¤·¤Æ¤ª¤¤¤Æ¡¢¤¢¤È¤Ï¡¢¤½¤ì¤ò¼Â¹Ô¤¹¤ë¡¢¤È¤¤¤¦·Á¼°¤¬´ðËÜŪ¤Ê½èÍý¤Ë¤Ê¤ê¤Þ¤¹¡£

¡¡Ìò³ä¤òÍ¿¤¨¤é¤ì¤¿¥¯¥é¥¹¤Ë¡¢¤½¤Î¥¯¥é¥¹¤¬¹Ô¤¦¤Ù¤­½èÍý¤ò¥á¥½¥Ã¥É¤È¤·¤Æ½àÈ÷¤·¡¢¤½¤ì¤ò¡¢É¬ÍפʤȤ­¤Ë¡¢É¬Íפʥ¹¥¯¥ê¥×¥È¤«¤é¼Â¹Ô¤¹¤ë¡¢¤È¤¤¤¦¥×¥í¥°¥é¥à¤Ë¤ª¤±¤ë½èÍý¤Îή¤ì¤òÄϤߤޤ·¤ç¤¦¡£



¡¡º£²ó¤Ï¤Þ¤º¡¢¥²¡¼¥à¤Î½ªÎ»»þ¤Ë¡¢¤½¤Î¤È¤­¤Î»þ´Ö¤ò¥»¡¼¥Ö¤¹¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£
¤Þ¤¿¡¢¥²¡¼¥à¤ò¼Â¹Ô¤·¤¿¤È¤­¤Ë¡¢¥»¡¼¥Ö¤µ¤ì¤Æ¤¤¤ë»þ´Ö¤Î¥Ç¡¼¥¿¤¬¤¢¤ë¾ì¹ç¤Ë¤Ï¡¢¤½¤Î¥Ç¡¼¥¿¤ò¥í¡¼¥É¤¹¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£

¡¡¤³¤Î£²¤Ä¤ÎÃͤ¬¼èÆÀ¤Ç¤­¤ë¤³¤È¤Ë¤è¤ê¡¢¡Ö¸½ºß¤Î¥²¡¼¥à¤Îµ¯Æ°»þ´Ö - Á°²ó¤Î¥²¡¼¥à¤Î½ªÎ»»þ´Ö¡×¤È¤¤¤¦·×»»¼°¤òºîÀ®¤¹¤ë¤³¤È¤¬½ÐÍè¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
²¿»ö¤â»öÁ°¤Î½àÈ÷¤È¡¢¤½¤Î½àÈ÷¤ËɬÍפʾðÊó¤¬É¬Íפˤʤ롢¤È¤¤¤¦¤³¤È¤Ç¤¹¡£

¡¡¤³¤ì¤Ï¤½¤Î¤Þ¤Þ¡ÖÁ°²ó¥²¡¼¥à¤ò½ªÎ»¤·¤Æ¤«¤é¡¢º£²ó¥²¡¼¥à¤òºÆ³«¤¹¤ë¤Þ¤Ç¤Î·Ð²á¤·¤¿»þ´Ö¡×¤È¤¤¤¦º¹Ê¬ÃͤȤ·¤ÆÍøÍѤ¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

¡¡¤Þ¤º¤Ï¤³¤Î½èÍý¤ò¼ÂÁõ¤·¤Þ¤¹¡£¤³¤Î½èÍý¤¬¤¢¤ëÁ°Äó¤Ç¡¢¤ª»È¤¤¤Î»þ´Ö¤ò¬Äê¤Ç¤­¤ë¤è¤¦¤Ë¤â¤Ê¤ë¤¿¤á¤Ç¤¹¡£

¡¡½èÍý¤ÎÀ߷פλ²¹ÍÎã¤Ç¤¹¡£¼«Ê¬¤Ç¹Í¤¨¤Æ¤¤¤¿¤À¤¤¤Æ¤â¹½¤¤¤Þ¤»¤ó¡£

¡ã»þ´Ö¤Î³èÍÑ¡ä
¡¡£±¡¥¥²¡¼¥à¤ò¼Â¹Ô¤¹¤ë¡£¥»¡¼¥Ö¤µ¤ì¤Æ¤¤¤ë»þ´Ö¤Î¥Ç¡¼¥¿¤¬¤Ê¤¤¾ì¹ç¤Ë¤Ï¡¢¸½ºß¤Î»þ¹ï¤ò¥²¡¼¥à»þ´Ö¤È¤·¤Æ¥»¥Ã¥È¤¹¤ë
¡¡¡¡¡¡¥»¡¼¥Ö¤µ¤ì¤Æ¤¤¤ë»þ´Ö¤Î¥Ç¡¼¥¿¤¬¤¢¤ë¾ì¹ç¤Ë¤Ï¡¢¤½¤Î¥Ç¡¼¥¿¤ò¥í¡¼¥É¤¹¤ë

¡¡£²¡¥¥í¡¼¥É¤·¤¿¡ÖÁ°²ó¥²¡¼¥à¤ò½ªÎ»¤·¤¿¤È¤­¤Î»þ´Ö¡×¤È¡Ö¸½ºß¤Î»þ´Ö¡×¤È¤ò·×»»¤·¤Æ¡¢¡Öº¹Ê¬Ã͡פò»»½Ð¤¹¤ë
¡¡¡¡¡¡¤³¤Îº¹Ê¬Ãͤ¬¡ÖÁ°²ó¥²¡¼¥à¤ò½ªÎ»¤·¤Æ¤«¤é¡¢º£²ó¥²¡¼¥à¤òºÆ³«¤¹¤ë¤Þ¤Ç¤Î·Ð²á¤·¤¿»þ´Ö¡×¤È¤Ê¤ë

¡¡£³¡¥¼¡¤Î¼ê½ç¤Ç¤Ï¤³¤Î¡Ö·Ð²á¤·¤¿»þ´Ö¡×¤ò³èÍѤ·¤Æ¤¤¤¯

¡¡£´¡¥¥²¡¼¥à¤ò½ªÎ»¤·¤¿¥¿¥¤¥ß¥ó¥°¤Ç¸½ºß¤Î»þ´Ö¤ò¥»¡¼¥Ö¤¹¤ë¡£¤³¤ÎÃͤ¬¼¡²ó¥²¡¼¥à¤ò³«»Ï¤·¤¿ºÝ¤Î¡ÖÁ°²ó¥²¡¼¥à¤ò½ªÎ»¤·¤¿¤È¤­¤Î»þ´Ö¡×¤È¤Ê¤ë


¡¡¤³¤Î½èÍý¤Îή¤ì¤ò¼ÂÁõ¤·¤Þ¤¹¡£¤³¤ì¤Ï¸½ºß¤Î½ê¤Ç¤Ï¡¢¤¹¤Ù¤Æ£±¤Ä¤Î¥¯¥é¥¹Æâ¤Ë½èÍý¤òµ­½Ò¤·¤Þ¤¹¡£

¡¡Á°²ó¤Ë¤Ä¤Å¤­¡¢´Êñ¤Ê½èÍý¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£¤Þ¤¿¡¢¿§¡¹¤Ê¥á¥½¥Ã¥É¤äµ¡Ç½¤òÁȤ߹ç¤ï¤»¤Æ½èÍý¤òºî¤Ã¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢
¤½¤Î½èÍý¤Îºî¤êÊý¤ò³Ø½¬¤·¤Æ¤¤¤¯¤è¤¦¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£


£²¡¥OfflineTimeManager ¥¹¥¯¥ê¥×¥È¤òºîÀ®¤¹¤ë


¡¡¥ª¥Õ¥é¥¤¥ó¤Ç¤Î»þ´Ö¤Î´ÉÍý¤ò¹Ô¤¦¤¿¤á¤Î¥¯¥é¥¹¤òºîÀ®¤·¡¢¤³¤ÎÃæ¤Ç¥²¡¼¥à³«»Ï»þ¤Î»þ´Ö¤Î¥»¡¼¥Ö¡¢¥²¡¼¥à¤ò½ªÎ»¤·¤¿»þ¤Î»þ´Ö¤Î¥»¡¼¥Ö¡¢
¥²¡¼¥à³«»Ï»þ¤Ë¥»¡¼¥Ö¤µ¤ì¤Æ¤¤¤ë»þ´Ö¤¬¤¢¤ë¾ì¹ç¤Ë¤Ï¥í¡¼¥É¤È¹Ô¤¤¡¢¸½ºß¤Î»þ´Ö¤È¥»¡¼¥Ö¤µ¤ì¤Æ¤¤¤ë»þ´Ö¤È¤Îº¹Ê¬Ãͤò·Ð²á»þ´Ö¤È¤·¤Æ·×»»¤¹¤ëµ¡Ç½¤ò¥á¥½¥Ã¥É¤È¤·¤Æ¼ÂÁõ¤·¤Þ¤¹¡£

¡¡¤³¤Î¥¯¥é¥¹¤Ï¥·¥ó¥°¥ë¥È¥ó¥Ñ¥¿¡¼¥ó¤Ë¤è¤Ã¤Æ¼ÂÁõ¤¹¤ë¤³¤È¤Ç¡¢¤¤¤º¤ì¤Î¥¯¥é¥¹¤«¤é¤Ç¤â¥¢¥¯¥»¥¹¤·¤ä¤¹¤¤¥¯¥é¥¹¤È¤·¤ÆºîÀ®¤ò¹Ô¤¤¤Þ¤¹¡£
º£²ó¤Î¥²¡¼¥à¤Ç¤Ï»þ´Ö¤Î¥»¡¼¥Ö¡¦¥í¡¼¥É¤Î½èÍý¤¬ÉÑÈˤËȯÀ¸¤¹¤ë¤¿¤á¡¢³Æ¥¯¥é¥¹¤Ë 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 ¥á¥½¥Ã¥É¡ä


¡¡¿·¤·¤¤¥·¡¼¥ó¤ò¥í¡¼¥É¤·¤ÆÁ«°Ü¤ò¤¹¤ë¤È¤­¤Ë¡¢°ú¿ô¤Ç»ØÄꤷ¤Æ¤¤¤ëÂоݤΥ²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤Ä¤¤¤Æ¤ÏÇË´þ¤µ¤ì¤Ê¤¤¤è¤¦¤Ë¤¹¤ë¥á¥½¥Ã¥É¤Ç¤¹¡£
¤½¤Î¤¿¤á¼¡¤Î¥·¡¼¥ó¤ËÁ«°Ü¤·¤Æ¤â¡¢¤³¤Î¥¹¥¯¥ê¥×¥È¤¬¥¢¥¿¥Ã¥Á¤µ¤ì¤Æ¤¤¤ë¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ÏÁ°¤Î¥·¡¼¥ó¤«¤éÇË´þ¤µ¤ì¤º¤Ë»Ä¤ê³¤±¤Þ¤¹¡£

¡¡Â¿¤¯¤Î¾ì¹ç¡¢º£²ó¤Î¤è¤¦¤Ë¥·¥ó¥°¥ë¥È¥ó¥¯¥é¥¹¤Ç°ì½ï¤ËÍøÍѤµ¤ì¡¢¥¹¥¯¥ê¥×¥È¤¬¥¢¥¿¥Ã¥Á¤µ¤ì¤Æ¤¤¤ë¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¼«¿È¤òÂоݤ˼è¤ê¤Þ¤¹¡£(¥¢¥¿¥Ã¥Á¤µ¤ì¤Æ¤¤¤ë¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤¬ÇË´þ¤µ¤ì¤Ê¤¯¤Ê¤ë)

  DontDestroyOnLoad(gameObject);

»²¹Í¥µ¥¤¥È¡¡
Unity¸ø¼°¥¹¥¯¥ê¥×¥È¥ê¥Õ¥¡¥ì¥ó¥¹
Object.DontDestroyOnLoad
https://docs.unity3d.com/ja/current/ScriptReferenc...


£µ¡¥¡ãconst ½¤¾þ»Ò¡ä


¡¡Àë¸À¥Õ¥£¡¼¥ë¥É¤Ë¤ÆÀë¸À¤ò¹Ô¤¦ÊÑ¿ô¤òÄê¿ô¤È¤·¤ÆÍøÍѤ¹¤ë¾ì¹ç¡¢ÊÑ¿ô¤ÎÀë¸À»þ const ½¤¾þ»Ò¤ò°ì½ï¤ËÀë¸À¤¹¤ë¤³¤È¤Ç¥²¡¼¥àÆâ¤ÇÊѲ½¤ÎȯÀ¸¤·¤Ê¤¤ÃͤȤ·¤ÆÀë¸À¤Ç¤­¤Þ¤¹¡£
¤³¤ÎÃͤÏÂåÆþ½èÍý¤ò¤¹¤ë¤³¤È¤¬½ÐÍè¤Ê¤¯¤Ê¤ê¤Þ¤¹¤Î¤Ç¡¢¾ï¤Ë¸ÇÄꤵ¤ì¤¿Ãͤò»²¾È¤¹¤ë¾ì¹ç¤Ê¤É¤ËÊØÍø¤Ç¤¹¡£

  private const string SAVE_KEY_DATETIME = "OfflineDateTime";¡¡¡¡¡¡// »þ´Ö¤ò¥»¡¼¥Ö¡¦¥í¡¼¥É¤¹¤ëºÝ¤ÎÊÑ¿ô¡£Äê¿ô¤È¤·¤ÆÀë¸À¤¹¤ë
  private const string FORMAT = "yyyy/MM/dd HH:mm:ss";¡¡¡¡ ¡¡¡¡¡¡¡¡// Æü»þ¤Î¥Õ¥©¡¼¥Þ¥Ã¥È»ØÄêÍÑ

¡¡º£²ó¤Î¥±¡¼¥¹¤Ç¤Ïʸ»úÎó¤ò£²¤Ä const ½¤¾þ»Ò¤ÇÀë¸À¤·¤Æ»²¾È¤·¤Æ¤¤¤Þ¤¹¡£
ʸ»úÎó¤Î¥¨¥é¡¼¤Ï¥³¥ó¥Ñ¥¤¥ë»þ¤Ëɽ¼¨¤µ¤ì¤Þ¤»¤ó¤Î¤Ç¡¢¸í¤ê¤Ëµ¤¤Å¤¯¤³¤È¤¬Æñ¤·¤¯¤Ê¤ê¤Þ¤¹¡£
¤½¤¦¤¤¤Ã¤¿Ê¸»úÎó¤ÎÆþÎϸí¤ê¤ò̤Á³¤ËËɤ°¤¿¤á¤Î¼êË¡¤Î£±¤Ä¤Ç¤¹¡£


£¶¡¥¡ãDateTime ¹½Â¤ÂÎ¤È DateTime.Now ¥×¥í¥Ñ¥Æ¥£¡ä


¡¡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.ParseExact ¥á¥½¥Ã¥É¡ä


¡¡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


£¸¡¥¡ãMonoBehaviour.OnApplicationQuit ¥á¥½¥Ã¥É¡ä


¡¡Unity ¥¨¥Ç¥£¥¿¡¼¤Ç¥²¡¼¥à¤ÎºÆÀ¸¤òÄä»ß¤·¤¿¥¿¥¤¥ß¥ó¥°¤Ç¼«Æ°Åª¤Ë¼Â¹Ô¤µ¤ì¤ë¥³¡¼¥ë¥Ð¥Ã¥¯·¿¤Î¥á¥½¥Ã¥É¤Ç¤¹¡£
üËö¤Î¾ì¹ç¤Ë¤Ï¥²¡¼¥à¤ò½ªÎ»¤·¤¿¥¿¥¤¥ß¥ó¥°¤Ç¼«Æ°Åª¤Ë¸Æ¤Ó½Ð¤µ¤ì¤Æ¡¢µ­½Ò¤µ¤ì¤Æ¤¤¤ë½èÍý¤ò¼Â¹Ô¤·¤Þ¤¹¡£

    /// <summary>
    /// ¥²¡¼¥à¤¬½ªÎ»¤·¤¿¤È¤­¤Ë¼«Æ°Åª¤Ë¸Æ¤Ð¤ì¤ë
    /// </summary>
    private void OnApplicationQuit() {

        // ¸½ºß¤Î»þ´Ö¤Î¥»¡¼¥Ö
        SaveOfflineDateTime();

        Debug.Log("¥²¡¼¥àÃæÃÇ¡£»þ´Ö¤Î¥»¡¼¥Ö´°Î»");
    }

¡¡Â¿¤¯¤ÎÊüÃÖ·¿¤Î¥²¡¼¥à¤Î¾ì¹ç¡¢¥²¡¼¥à¤ò¼Â¹ÔÃæ°Ê³°¤Ç¤â»þ´Ö¤ò·×»»¤Ç¤­¤ë¾õÂ֤ˤ·¤Æ¤ª¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢
º£²ó¤Î¥±¡¼¥¹¤Î¾ì¹ç¤â¡¢¥²¡¼¥à¤ò½ªÎ»¤·¤¿¥¿¥¤¥ß¥ó¥°¤Ç¡¢¸½ºß¤Î»þ¹ï¤ò¥»¡¼¥Ö¤·¤ÆÃÖ¤¯¤è¤¦¤Ë¤·¤Þ¤¹¡£

¡¡¤³¤ÎÃͤò¡¢¼¡²ó¥²¡¼¥à¤òµ¯Æ°¤·¤¿ºÝ¤Ë¼èÆÀ¤·¡¢¥²¡¼¥à¤òµ¯Æ°¤·¤¿»þ´Ö¤È¡¢¥»¡¼¥Ö¤µ¤ì¤Æ¤¤¤ë»þ´Ö¤È¤òÈæ¤Ù¤ë¤³¤È¤Ç
¤É¤Î°Ì¤Î»þ´Ö¤¬·Ð²á¤·¤Æ¤¤¤ë¤Î¤«¡¢º¹Ê¬Ãͤò¼èÆÀ¤Ç¤­¤ë¤è¤¦¤Ë¤·¤Æ¤¤¤Þ¤¹¡£


£¹¡¥¡ãMath.Round ¥á¥½¥Ã¥É¤È MidpointRounding Îóµó(enum)·¿¡ä


¡¡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


£±£°¡¥¡ãTimeSpan ¹½Â¤ÂÎ¤È TimeSpan.TotalSeconds ¥×¥í¥Ñ¥Æ¥£¡ä


¡¡»þ´Ö¤Î´Ö³Ö¤òɽ¤¹µ¡Ç½¤Ç¤¹¡£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 ¤òÁªÂò¤·¤Æ¥»¡¼¥Ö¥Ç¡¼¥¿¤òºï½ü¤·¤Æ»î¤·¤Æ¤¯¤À¤µ¤¤¡£


¡¡°Ê¾å¤Ç¤³¤Î¼ê½ç¤Ï½ªÎ»¤Ç¤¹¡£
¡¡
¡¡¼¡¤Ï¡¡¼ê½ç£±£³¡¡¡Ý¥²¡¼¥à´ÉÍý¥¯¥é¥¹¤Î¼ÂÁõ¡Ý¡¡¤Ç¤¹¡£

¥³¥á¥ó¥È¤ò¤«¤¯


¡Öhttp://¡×¤ò´Þ¤àÅê¹Æ¤Ï¶Ø»ß¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

ÍøÍѵ¬Ìó¤ò¤´³Îǧ¤Î¤¦¤¨¤´µ­Æþ²¼¤µ¤¤

Menu



´ðÁÃ

µ»½Ñ/Ãμ±(¼ÂÁõÎã)

3D¥¢¥¯¥·¥ç¥ó¥²¡¼¥à

2D¤ª¤Ï¤¸¤­¥²¡¼¥à(ȯŸÊÔ)

2D¶¯À©²£¥¹¥¯¥í¡¼¥ë¥¢¥¯¥·¥ç¥ó(ȯŸÊÔ)

2D¥¿¥Ã¥×¥·¥å¡¼¥Æ¥£¥ó¥°(³ÈÄ¥ÊÔ)

¥ì¡¼¥¹¥²¡¼¥à(È´¿è)

2DÊüÃÖ¥²¡¼¥à(ȯŸÊÔ)

3D¥ì¡¼¥ë¥¬¥ó¥·¥å¡¼¥Æ¥£¥ó¥°(±þÍÑÊÔ)

3Dæ½Ð¥²¡¼¥à(È´¿è)

2D¥ê¥¢¥ë¥¿¥¤¥à¥¹¥È¥é¥Æ¥¸¡¼

3D¥¿¥Ã¥×¥¢¥¯¥·¥ç¥ó(NavMeshAgent »ÈÍÑ)

2D¥È¥Ã¥×¥Ó¥å¡¼¥¢¥¯¥·¥ç¥ó(¥«¥¨¥ë¤Î°Ù¤Ë¡Á¡¢¥Ü¥³¥¹¥«¥¦¥©¡¼¥ºÉ÷)

VideoPlayer ¥¤¥Ù¥ó¥ÈϢư¤Î¼ÂÁõÎã

VideoPlayer ¥ê¥¹¥ÈÆ⤫¤é¥à¡¼¥Ó¡¼ºÆÀ¸¤Î¼ÂÁõÎã(ȯŸ)

AR ²èÁüÉÕ¤­¥ª¥Ö¥¸¥§¥¯¥ÈÀ¸À®¤Î¼ÂÁõÎã

AR ¥ê¥¹¥ÈÆ⤫¤éÀ¸À®¤Î¼ÂÁõÎã(ȯŸ)

2D¥È¥Ã¥×¥Ó¥å¡¼¥¢¥¯¥·¥ç¥ó(¥µ¥Ð¥¤¥Ð¡¼É÷)

private



¤³¤Î¥µ¥¤¥ÈÆâ¤ÎºîÉʤϥæ¥Ë¥Æ¥£¤Á¤ã¤ó¥é¥¤¥»¥ó¥¹¾ò¹à¤Î¸µ¤ËÄ󶡤µ¤ì¤Æ¤¤¤Þ¤¹¡£

´ÉÍý¿Í/Éû´ÉÍý¿Í¤Î¤ßÊÔ½¸¤Ç¤­¤Þ¤¹