目次
はじめに
内閣府からダウンロードできるCSVデータからカレンダーに祝日を実装する手段です。
祝日は毎年変化するためこのデータをもとに読み込めるようにします。
カレンダーの作成には以下の記事で分かりやすく解説されているのでそちらを参考に作成しました。
解説
<処理内容>
csvデータを読み込み、日付と祝日名を抽出します。
カレンダー生成時に日付が一致している場合は日数に祝日名を追加して表示します。
①CSVデータの入手と変換
unityはUTF-8形式に変換しないと日本語を正しく表示できないので、csvをメモ帳で開きUTF-8に変換します。
②Unityにインポート
CSVをロードする仕組みを後に作るので、Assets/Resources/CSV/syukujitsuのファイル構造でインポートします。
日本語が正しく表示されているか確認しましょう。
③CSVの読み込み
以下のスクリプトをコピペしてください。
CSVデータを取得して名前とDateTimeの配列にデータを入れるスクリプトです。
昔の日付は判定に不必要なので配列生成時に除外するようにしたほうが判定に不要な処理が走らないので今年より前は除外しています。
using System.Collections.Generic;
using UnityEngine;
using System.IO;
using System;public class LoadHolidayData
{
static TextAsset csvFile;
static List<string> holidayData = new List<string>();public List<string> holidayName=new List<string>();
public List<DateTime> holidayDataTime=new List<DateTime>();
static void CsvReader()
{
csvFile = Resources.Load("CSV/syukujitsu") as TextAsset;
StringReader reader = new StringReader(csvFile.text);
while (reader.Peek() != -1)
{
string line = reader.ReadLine();
holidayData.Add(line.Split(','));
}
}
public void Init()
{
CsvReader();
for (int i = 1; i < holidayData.Count; i++)
{
string[] part = holidayData[i][0].Split('/');
if (int.Parse(part[0])>=DateTime.Now.Year)
{
holidayDataTime.Add(DateTime.Parse(holidayData[i][0]));
holidayName.Add(holidayData[i][1]);
}
}
}
}
④使い方
LoadHolidayDataを生成してInit()を呼ぶとロードされます。
取得方法はログの通りです。
今年以降の祝日が取得できました。
あとは生成箇所で判定すれば完成です。
最後に
皆様の応援が投稿のモチベーションになりますので
コメントやTwitterのフォローなどしていただけるとありがたいです。
それではよきゲーム開発を。