/// <summary>
    /// コメントの生成
    /// </summary>
    public GameObject CreateComment(Vector3 position, string speakerName, string text, Color color, double lifeTime)
    {
        if (!charaSpeachPrefab)
        {
            MyUtil.ErrorLog("null値の変数です。");
            return(null);
        }



        GameObject charaSpeach = WidgetController.AddPrefab(UIRoot(), charaSpeachPrefab);

        if (!charaSpeach)
        {
            MyUtil.ErrorLog("null値の変数です。");
            return(null);
        }
        charaSpeach.name = "Comment_" + commentNumber++;
        charaSpeach.transform.localPosition = position;



        CharaSpeach comment = charaSpeach.GetComponent <CharaSpeach>();

        if (!comment)
        {
            MyUtil.ErrorLog("null値の変数です。");
            return(null);
        }
        comment.lifeTime = lifeTime;
        comment.InitializeColor(color);
        if (!comment.speakerNameLabel || null == comment.speakerNameLabel.text)
        {
            MyUtil.ErrorLog("null値の変数です。");
            return(null);
        }
        comment.speakerNameLabel.text = speakerName;



        UILabel label = comment.label;

        if (!label)
        {
            MyUtil.ErrorLog("null値の変数です。");
            return(null);
        }
        label.text = text;



        return(charaSpeach);
    }
    /// <summary>
    /// ダメージ処理
    /// </summary>
    public void Damage()
    {
//CharacterStatusクラスのDamage()が先に呼ばれる為、
//前回のHPを参照した方が良い?
//        if ( !damageEffectPrefab || !characterStatus || 0 >= characterStatus.HP ) return;
        if (!damageEffectPrefab || !characterStatus || 0 >= prevHP)
        {
            return;
        }



//        int HP = characterStatus.HP;
        int HP = prevHP;

//1度のダメージが3以上だと、演出面で不自然になるかも?

        // 体力の炎パーティクル配列のインデックスを算出
        //現在のHPをもとに、有効な範囲で右端の炎パーティクルがある
        //インデックスを求める。
        int idx = (HP / lifeCountPerUnitHPUI_MAX) - 1;

        idx += ((HP % lifeCountPerUnitHPUI_MAX) >= 1) ? 1 : 0;


        // インデックス0番以外用の炎パーティクル設定
        if (1 <= idx)
        {
            fireSplashParticle.startSpeed = FIRE_SPLASH_PARTICLE_START_SPEED_MIN;
            fireSplashParticle.startSize  = FIRE_SPLASH_PARTICLE_START_SIZE_MIN;
        }

        // インデックス0番用の炎パーティクル設定
        else
        {
            fireSplashParticle.startSpeed = FIRE_SPLASH_PARTICLE_START_SPEED_MAX;
            fireSplashParticle.startSize  = FIRE_SPLASH_PARTICLE_START_SIZE_MAX;
        }

        // ダメージエフェクト用のパーティクルを
        // 対象の炎パーティクルの位置にして発生させる
        fireSplashParticle.transform.position = hpParticles[idx].transform.position;
        fireSplashParticle.Play();



        // ダメージエフェクト用のゲームオブジェクト(スプライト)を生成
        WidgetController.AddPrefab(
            GameObject.Find("UI Root"),
            damageEffectPrefab
            );
    }
    /// <summary>
    /// システムメッセージの生成
    /// </summary>
    public GameObject CreateSystemMessage(string text)
    {
        if (!systemMessagePrefab)
        {
            MyUtil.ErrorLog("null値の変数です。");
            return(null);
        }



        GameObject systemMessage = WidgetController.AddPrefab(UIRoot(), systemMessagePrefab);

        if (!systemMessage)
        {
            MyUtil.ErrorLog("null値の変数です。");
            return(null);
        }
        systemMessage.name = "Message_" + messageNumber++;



        SystemMessage message = systemMessage.GetComponent <SystemMessage>();

        if (!message)
        {
            MyUtil.ErrorLog("null値の変数です。");
            return(null);
        }



        UILabel label = message.label;

        if (!label)
        {
            MyUtil.ErrorLog("null値の変数です。");
            return(null);
        }
        label.text = text;



        return(systemMessage);
    }