CMessageDataSheetMgrについて

文字リソースを管理するためのオブジェクトです。

CMessageDataSheetが、Excelのシートに対応しています。

CMessageDataSheetMgrは、CMessageDataSheetを束ねるコンテナになっています。

ちょうど、CMessageDataSheetMgrが、Excelの1ファイルに相当するようになっています。

アプリケーションに組み込む方法

CMainSystemのAwakeの中で、addManagerします。

public class CMainSystem : CMainSystemBase {
   //==========================================================================
    /*!Awake
    * @brief   Unity Callback
    */
    new void Awake() {
        base.Awake();

        if (m_instance != null) {
            Debug.LogError("already exist CMainSystem");
            return;
        }
        m_instance = this;

        // Add Component
        gameObject.AddComponent<CInput>();
        gameObject.AddComponent<CAssetBundleMgr>();
        gameObject.AddComponent<CSpriteFontMgr>();
        gameObject.AddComponent<CTextureResourceMgr>();
        gameObject.AddComponent<CWindowMgr>();
        gameObject.AddComponent<CBgmResourceMgr>();
        gameObject.AddComponent<CSeResourceMgr>();
        gameObject.AddComponent<CSoundEffectMgr>();

        addManager(new CMessageDataSheetMgr(Utility.getSystemLocale()));
    }

また、CWindowMgrのキャプションと関連付けたいときは、CMainSystemのinitializeの中で次のように設定します。

public class CMainSystem : CMainSystemBase {
   //==========================================================================
   /*!Initialize
   * @brief    initialize
   */
   override protected void initialize() {
       base.initialize();

       //--------------------------------------------
       // WindowMgr initialize.
       //--------------------------------------------
       CWindowMgr      cWindowMgr = CWindowMgr.Instance;
       // initialize caption interface
       cWindowMgr.captiondata = CMessageDataSheetMgr.Instance.find(new FiveCC("WNDW"));

CMessageDataSheetMgrが、IWinCaptionDataインターフェースを持っているためこのように記述可能です。

CMessageDataSheetMgrは、CMessageDataSheetを複数持つ、コンテナになっています。

CMessageDataSheetは、Excel上でシート一つに該当します。

CMessageDataSheetMgrは、Excelのシートを束ねて持っているコンテナとも言えます。

ただし、複数ロケールを一つのアセットに纏めて持つわけではなく、ロケール毎に分けて文字リソースデータを持っています。 よって、アプリケーションでは一つのロケールデータのみを保持することになります。

Excelから生成したバイナリデータを指定します。

シートを一つ取得します。

CMessageDataSheet cSheet = cMessageDataSheetMgr.find(new FiveCC("WNDW");

現在設定されているロケールを取得する。

CMessageDataSheetMgrのインスタンスを取得する。

Excel上のシート一つに対応します。

フォーマットにそって文字リソースを生成し返します。

string str = cMessageDataSheetMgr.format(new MulId(0,0,1),"Test",n,value);