フォントを場面ごとに切り替えたい

261 views
Skip to first unread message

優水

unread,
Mar 29, 2022, 12:08:34 AM3/29/22
to 宴ユーザーグループ

宴のバージョン: 宴3.11.3

UnityのバージョンとOS: Unity2020.3.30f1 MacOS BigSur

Unityの習熟度:初心者。プログラムはできません。


フォントを場面によって切り替えたいのですが、部分的なフォントの切り替えということは可能でしょうか?

TextSettingsオブジェクトを作成して設定すれば良いのかと思いましたが、

どのように設定すれば良いのか、エクセルファイル側でどのように切り替えればよいのかがわかりませんでした。

初歩的な質問で恐縮ですが、ご教示いただけますと幸いです。

マッドネスラボ

unread,
Mar 29, 2022, 4:13:50 AM3/29/22
to 宴ユーザーグループ
TextSettingsは、禁則処理などの設定でフォントそのものは変えることができません。


〇やり方その1
基本機能のみで行うのであれば、メッセージウィンドウを切り替えるという方法があります。
UguiNovelTextの「font」の部分に、違うフォントを設定した複数のメッセージウィンドウを使って、メッセージウィンドウごと切り替える形になります。



〇やり方その2
上記の、メッセージウィンドウを切り替える方法と使わずにフォントのみを変えたいのであればプログラムを自作する形になります。
できてしまえば、楽なのですが、プログラムの知識が必要なので、なるべく「その1」のほうでやったほうが良いかと思います。

メッセージウィンドウを一つしか使っていないのであれば、サンプルは以下のようになります。(同一のファイルを添付しました)
using UnityEngine;
using Utage;
using System.Collections.Generic;

// パラメーターの「font」に設定された名前のフォントを、自動的にメッセージウィンドウに設定するサンプル
public class SampleChangeFont : MonoBehaviour
{
        public AdvEngine engine = null;
        public string paramNameFont = "font";
        public List<Font> fonts = new List<Font>();
        public AdvUguiMessageWindow messageWindow = null;

        string CurrentFontName { get; set; }

        //指定の名前のフォントに変更
        void ChangeFont( string fontName )
        {
                var font = fonts.Find(x => x.name == fontName);
                if (font == null)
                {
                        Debug.LogError($"{fontName} は設定されていないフォント名です");
                        return;
                }
                messageWindow.Text.font = font;
                CurrentFontName = fontName;
        }

        void Update()
        {
                if (!engine.IsStarted) return;
                if (!engine.Param.IsInit) return;

                var fontName = engine.Param.GetParameterString(paramNameFont);
                if (CurrentFontName != fontName)
                {
                        ChangeFont(fontName);
                }
        }
}

これをAddComponentして、インスペクター上で「engine」や「messageWindow」を手動設定してください。
Fontsには使用するフォントのリストを設定します。
ss_0263.png

その後、Paramコマンドで、
パラメーターのfontを変える形で、フォントを切り替えます。
ss_0262.png
ただし、このサンプルは、複数のメッセージウィンドウを使っている場合は使えません。
「複数のメッセージウィンドウを使って、なおかつそれらのメッセージウィンドウのフォントを切り替えられるようにする」というケースの場合は、別のプログラムの書き方が必要になります。
また、セーブに対応するためにパラメーター機能を使っているので、逆にセーブをしない場合は正常に動作しない可能性があります。



2022年3月29日火曜日 13:08:34 UTC+9 優水:

マッドネスラボ

unread,
Mar 29, 2022, 4:29:09 AM3/29/22
to 宴ユーザーグループ
追記
サンプルファイルの添付を忘れていましたので、こちらに添付しました。


2022年3月29日火曜日 17:13:50 UTC+9 マッドネスラボ:
SampleChangeFont.cs

優水

unread,
Mar 29, 2022, 5:15:35 AM3/29/22
to 宴ユーザーグループ
ありがとうございます、基本機能で実装できそうです。
同一ウィンドウで切り替える必要が出てきた際も参考にさせていただきます。
素早いご対応ありがとうございました。

2022年3月29日火曜日 17:29:09 UTC+9 マッドネスラボ:
Reply all
Reply to author
Forward
0 new messages