コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】【NGUI】ラベルのフォントサイズや文字色のルールを管理してシーンに反映するスクリプト紹介

はじめに

f:id:baba_s:20170825181226p:plain

ゲームの UI を作成していると、たくさんの UI オブジェクトをシーンに配置する必要が出てきます
スマホゲームだと 100 を超える画面を作成することもあるため、
後からスプライトやラベルのレギュレーションを変えようとすると、
作業に大量の時間を要するだけでなく、UI オブジェクトの設定を変更し忘れてしまい、
統一感の無い画面ができあがってしまうことがあります

そのため、僕は Unity で UI を実装する時に、
UI のレギュレーションを管理する機能を作成してゲーム開発で使用しています

今回は、ラベルの UI のレギュレーションを管理する機能を紹介していきます

検証環境

  • Unity 5.6.2f1
  • NGUI 3.11.4

使い方

上記ページに「UILabelRule.unitypackage」という Unity パッケージを公開しました
こちらを Unity プロジェクトにインポートしていただくことで使用可能となります

※NGUI が必要になります

f:id:baba_s:20170825182822p:plain

「UILabelRule.unitypackage」をインポートすると
上記のファイルが Unity プロジェクトに追加されます

f:id:baba_s:20170825183658p:plain

そして、追加された「UILabelRuleSetting.asset」を編集して
ラベルのレギュレーションを登録していきます

f:id:baba_s:20170828121110p:plain

デフォルトでは「UILabelRuleSetting.asset」にはレギュレーションが登録されていないため、
下記のように UILabel に関する設定を追加していきます

f:id:baba_s:20170828115329p:plain

「UILabelRuleSetting.asset」では下記のレギュレーションが設定できます

項目 内容
編集不可 オンなら編集できなくなります
英語名(大文字) 列挙型の要素名
日本語名 列挙型の要素のコメント
フォントサイズ適用 オンなら UILabel.fontSize を変更
フォントサイズ UILabel.fontSize の値
文字の色 UILabel.color の値
文字効果の種類 UILabel.effectStyle の値
文字効果の色 UILabel.effectColor の値
文字効果の距離 UILabel.effectDistance の値

設定を追加したら「反映」ボタンを押します

f:id:baba_s:20170825182922p:plain

完了ダイアログが表示された後にコンパイルが走るので少し待ちます

そして、設定したレギュレーションを適用したい UI オブジェクトに
「UILabelRule」コンポーネントをアタッチします

f:id:baba_s:20170825182849p:plain

その後、プルダウンメニューから適用したいレギュレーションを設定します

f:id:baba_s:20170825182857p:plain

f:id:baba_s:20170828120909g:plain

ラベルに反映したいレギュレーションはスクリプトから変更することも可能です

using UnityEngine;

public class Example : MonoBehaviour
{
    [SerializeField] private UILabelRule m_labelRule;

    private void Awake()
    {
        m_labelRule.SetType( UI_LABEL_COLOR_TYPE.YELLOW );
    }
}

以上が「UILabelRule.unitypackage」の基本的な使い方となります

まとめ

今回は NGUI のラベルのレギュレーションを管理するスクリプトを紹介させて頂きました

時間があればスプライトやテクスチャのレギュレーションを管理するスクリプトも
紹介していければなと考えてます

また、今のスマホゲーム開発では uGUI や TextMesh Pro がよく使われていると思うので
uGUI や TextMesh Pro 版の UILabelRule も余裕があれば作ってみます