Tsuの雑記¯\_(ツ)_/¯

主に製作メモ・備忘録として使用。製作したアプリのリンクもあります。

【Unity】バージョン表記の更新忘れを防ぐために【C#】

アプリをバージョンアップする際,アプリ画面に表示するバージョン表記の更新を忘れないための提案です。

(ついでにコピーライトも)

本稿では,UI.Text を使って御説明いたします。

(2019/09/12)追記しました。

(Unity 2018.3.0f2)

UI.Text の設置

まずはバージョン番号を表示する位置に,UI.Text を設置します。

サイズや位置をシミュレーションするためにも,想定する文字数に近いテキストを入力しておくと良いでしょう。

UnityEditor の Inspector ウィンドウで Text を編集している画像
アプリ画面下部に UI.Text を設置

スクリプトの用意

次に,このテキストを変更するスクリプトを用意します。

using UnityEngine;
// Text を使用するため
using UnityEngine.UI;

public class NewBehaviourScript : MonoBehaviour
{
    // 公開年
    [SerializeField] string year = string.Empty;
    // コピーライト表示欄
    [SerializeField] Text copyright = null;

    void Start()
    {
        // バージョン
        var version = Application.version;
        // リリース元
        var companyName = Application.companyName;
        // コピーライト書き換え
        copyright.text = $"Ver.{version} © {year} {companyName}";
    }
}

テキストをまとめた行には,文字列補間機能を使用しています。

C# のバージョンが 5 以下であれば,次のように記述してください。

copyright.text = "Ver." + version + " © " + year + " " + companyName;

docs.microsoft.com

Application.companyNameは,リリース元の名称を取得します。

docs.unity3d.com

Application.versionは,アプリのバージョン番号を取得します。

docs.unity3d.com

これらの数値や文字列は,Player Settings にて変更できます。

Unityのバージョンによって多少の違いはありますが,2種類の方法で表示できます。

  • [File] タブ→ [Build Settings...] → [Player Settings...](Inspectorウィンドウに表示)

  • [Edit] タブ→ [Project Settings..](新たなウィンドウとして出現)

UnityEditor の Player Settings ウィンドウに Company Name と Version の項目が表示されている画像
Player Settings ウィンドウの上部に,設定項目がある

Player Settings はアプリのリリース前に必ず操作するため,今回はこのような方法を採りました。

アタッチ

後はこのスクリプトを適当なオブジェクトにアタッチして,パラメータを設定します。

UnityEditor の Game ウィンドウで UI.Text のテキストが変化した画像
プレイすると,UI.Text のテキストが変化する

year変数をint型ではなくstring型にしたのは,最終更新年も併記する記法(上図参照)に対応するためです。

おまけ

(2019/09/12)以下の内容を追記しました。

また,プレイ中に限らず表記を更新する方法もあります。

docs.unity3d.com

このOnvalidate()関数を利用した物が,下記のコードです。

using UnityEngine;
// Text を使用するため
using UnityEngine.UI;

public class NewBehaviourScript : MonoBehaviour
{
    // 公開年
    [SerializeField] string year = string.Empty;
    // コピーライト表示欄
    [SerializeField] Text copyright = null;

    void OnValidate()
    {
        RewriteCopyright();
    }

    void Start()
    {
        RewriteCopyright();
    }

    /// <summary>
    /// コピーライト書き換え
    /// </summary>
    void RewriteCopyright()
    {
        // バージョン
        var version = Application.version;
        // リリース元
        var companyName = Application.companyName;
        // コピーライト書き換え
        copyright.text = $"Ver.{version} © {year} {companyName}";
    }
}

これによって,Inspector 上での変数操作に合わせて内容が更新されます。

Inspector 画面上の変数操作に合わせて Game 画面が変化する画像
プレイ中でなくともテキストが更新される

注意点ですが,PlayerSetting 画面で操作するApplication.companyNameApplication.versionの変更には連動しません。

それさえ留意していれば問題ないのですが,念の為Start()関数内にも書き換え命令を残しております。

以上,バージョン表記の更新忘れを防ぐための提案でした。

公開前に確認したい事項について,以下の記事もお読みいただけると幸いです。

tsu-games.hatenablog.com