【Unity】定数をどこからでも呼び出せるようにする

Unityで定数を定義してプロジェクトのどこからでも使えるようにする方法です。

ファイルの作成

適当なフォルダにC#Scriptを作成し、namespaceを適当な名前に設定します。
ここでは「Common」にしました。
特にオブジェクトにアタッチとかはしなくていいです。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

namespace Common
{

}

コード

①数値型や文字型

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;

namespace Common
{
    /// <summary>
    /// 共通定数
    /// </summary>
    public static class GrovalConst
    {
        public const int CONST_TEST = 1;
    }

}

まずクラスをpublic staticで定義します。
数値型や文字型の場合はその中にpublic constで定義すればOKです。

②配列

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;

namespace Common
{
    /// <summary>
    /// 共通定数
    /// </summary>
    public static class GrovalConst
    {
        /// <summary>
        /// 文字のインデックス番号を定義
        /// </summary>
        public static readonly string[,] CHARS =  
            {{"あ","a" },{"い","i" },{"う","u" },{"え","e" },{"お","o" },{"ら","ra" },{"り","ri" },{"る","ru" },{"れ","re" },{"ろ","ro" },
             {"か", "ka" },{"き","ki" },{"く","ku" },{"け","ke" },{"こ","ko" },{"が","ga" },{"ぎ","gi" },{"ぐ","gu" },{"げ","ge" },{"ご","go" },
             {"さ", "sa" },{"し","si" },{"す","su" },{"せ","se" },{"そ","so" },{"ざ","za" },{"じ","zi" },{"ず","zu" },{"ぜ","ze" },{"ぞ","zo" },
             {"た", "ta" },{"ち","ti" },{"つ","tu" },{"て","te" },{"と","to" },{"だ","da" },{"ぢ","di" },{"づ","du" },{"で","de" },{"ど","do" },
             {"な", "na" },{"に","ni" },{"ぬ","nu" },{"ね","ne" },{"の","no" },{"ば","ba" },{"び","bi" },{"ぶ","bu" },{"べ","be" },{"ぼ","bo" },
             {"は", "ha" },{"ひ","hi" },{"ふ","hu" },{"へ","he" },{"ほ","ho" },{"ぱ","pa" },{"ぴ","pi" },{"ぷ","pu" },{"ぺ","pe" },{"ぽ","po" },
             {"ま", "ma" },{"み","mi" },{"む","mu" },{"め","me" },{"も","mo" },{"っ","xtu" },{"ゃ","xya" },{"ゅ","xyu" },{"ょ","xyo" },
             {"ぁ", "xa" },{"ぃ","xi" },{"ぅ","xu" },{"ぇ","xe" },{"ぉ","xo" },{"や","ya" },{"ゆ","yu" },{"よ","yo" },{"わ","wa" },{"を","wo" },{"ん","n" },
             {"ー", "hyphon" },{"?","question" } };

    }

}

配列の場合はpublic constでは定義できません。
そのためpublic static readonlyで定義します。

③関数

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;

namespace Common
{
    /// <summary>
    /// 共通関数
    /// </summary>
    public static class Utility
    {

        /// <summary>
        /// 文字のインデックス番号を取得
        /// </summary>
        /// <param name="sChar">文字</param>
        /// <returns></returns>
        public static int fncGetCharIndex(string sChar)
        {

            //文字とアルファベットの配列から文字だけ抜き出して配列にする
            string[] arrChar = new string[GrovalConst.CHARS.Length / 2];
            for(int i = 0; i < GrovalConst.CHARS.Length / 2; i++)
            {
                arrChar[i] = GrovalConst.CHARS[i, 0];
            }

            return Array.IndexOf(arrChar, sChar);
        }

    }

}

関数もstaticで定義できます。

使い方

まず使いたいC#ScriptでCommon(namespaceに設定した名前)をインポートします。

using Common;

「クラス名.定数名」や「クラス名.関数名」で使うことができます。

//キーボードの文字をタップしたとき
public void fncKeyPress(string sChar)
{

    //文字のインデックス番号を取得
    int iCharIndex = Utility.fncGetCharIndex(sChar);

}

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です