Build 時の日付時刻を取得し,バージョンとして表示する

こんなイメージ.

f:id:xrdnk:20201204205046p:plain

プロジェクトごとにバージョン番号は Application.version などで管理されているかもしれませんが,
今回はビルド時の日付時刻をバージョン番号として表示するようにします.

ビルド時の時刻を取得する

PostProcessBuild を利用します.
こちらを利用することでビルド後に処理が走るようになります.

qiita.com

ビルド時に日付時刻情報を書き込みます.
書き込んだ情報は今回は Resources フォルダに保存するようにします.
(Resourcesに保存すべきか議論はあると思いますが…)

using UnityEngine;
using UnityEditor;
using UnityEditor.Callbacks;
using System.IO;
using System;

namespace MyProject
{
    /// <summary>
    /// ビルド時の時刻を取得する
    /// </summary>
    public class ReleaseDateWhenBuild : MonoBehaviour
    {
        private static readonly string FILE_PATH = "Assets/Resources/BuildDate.txt";

        [PostProcessBuild(1)]
        public static void OnPostProcessBuild(BuildTarget target, string path)
        {
            using (var writer = new BinaryWriter(File.Open(FILE_PATH, FileMode.OpenOrCreate, FileAccess.Write)))
            {
                writer.Write(DateTime.Now.ToString("yyyy.MM.dd.HH.mm"));
            }
        }
    }
}

注意として Resources フォルダがない場合はエラーが出るので,事前に生成する必要があります.

バージョン表示

後はビルド時に生成した日付情報を含むファイルを読み込むだけです.

using UnityEngine;
using UnityEngine.UI;

namespace MyProject
{
    public class VersionManager : MonoBehaviour
    {
        [SerializeField] private Text _BuildDateText;

        private void Start() => _BuildDateText.text = $"ver.{Resources.Load<TextAsset>("BuildDate").text}";
    }
}

以上になります.

f:id:xrdnk:20201204210009p:plain

TextMeshPro だと文字化けが出る

TextMeshPro だと文字化けが出ます.

f:id:xrdnk:20201204210152p:plain

理由は判明しており,ver.と日付情報の間に謎の空白?みたいなの発生しています.

gyazo.com (本来矢印キーで移動するとスムーズに移動するはずなのに,"." と "2" の間に見えない壁みたいなのがある.)

こちらの原因については不明なので,調査中です….お分かりの方はコメントお願いしますm( )m