//頂点情報を作成
        void Refresh()
        {
            if (CheckRequestingCharactersInTextureError())
            {
                //テクスチャ内の文字をリクエストしている最中にここに来るのはエラー
                return;
            }

            Profiler.BeginSample("Refresh");

            //TextDataの更新
            //文字の大きさなどのデータを取得
            bool updateText = TryUpdateTextData(NovelText.text);

            //行データの再作成
            TryUpdateLineData(updateText);

            if (isDebugLog)
            {
                Debug.Log("Refresh()");
            }
            //テキストのアンカーを適用する
            ApplyTextAnchor(this.LineDataList, NovelText.alignment, this.MaxWidth, this.MaxHeight);
            //Offsetを適用する
            ApplyOffset(this.LineDataList, this.MaxWidth, this.MaxHeight);
            //拡張的な情報の表示位置を初期化
            Additional.InitPosition(this);
            //当たり判定の情報を作成
            MakeHitGroups(this.CharacterDataList);

            isInitGraphicObjectList = false;
            IsRebuidFont            = false;
            Profiler.EndSample();
        }
Exemple #2
0
        //テキストエリアの情報を作成(実際の表示位置や自動改行処理)
        internal void BuildTextArea(RectTransform rectTransform)
        {
            //禁則処理等、すべての情報を再度作成
            Profiler.BeginSample("BuildTextArea");

            //描画範囲のサイズに合わせて自動改行
            Rect  rect = rectTransform.rect;
            float maxW = Mathf.Abs(rect.width);
            float maxH = Mathf.Abs(rect.height);

            //文字のX座標を計算(自動改行処理も行う)
            ApplyXPosition(this.CharacterDataList, maxW);
            //行ごとの文字データを作成
            this.LineDataList = CreateLineList(this.CharacterDataList, maxH);

            //今の描画範囲を更新
            this.MaxWidth  = maxW;
            this.MaxHeight = maxH;

            //テキストのアンカーを適用する
            ApplyTextAnchor(this.LineDataList, NovelText.alignment, MaxWidth, MaxHeight);
            //Offsetを適用する
            ApplyOffset(this.LineDataList, MaxWidth, MaxHeight, rectTransform.pivot);
            //拡張的な情報の表示位置を初期化
            Additional.InitPosition(Generator);
            //当たり判定の情報を作成
            MakeHitGroups(this.CharacterDataList);

            MakeVerts(this.LineDataList);
            Profiler.EndSample();
        }
Exemple #3
0
        //頂点情報を作成
        void Refresh()
        {
            if (isRequestingCharactersInTexture)
            {
                if (isDebugLog)
                {
                    Debug.LogError("RequestingCharactersInTexture on Refresh");
                }
                return;
            }

            //TextData作成
            textData = new TextData(NovelText.text);
            if (isDebugLog)
            {
                Debug.Log(textData.ParsedText.OriginalText);
            }

            //描画範囲のサイズを設定しておく
            Rect rect = CachedRectTransform.rect;

            maxWidth  = Mathf.Abs(rect.width);
            maxHeight = Mathf.Abs(rect.height);

            //文字データを作成
            List <UguiNovelTextCharacter> characterDataList = CreateCharacterDataList();

            //拡張的な情報を作成
            additional = new UguiNovelTextGeneratorAdditional(characterDataList, this);
            //フォントの文字画像を準備・設定
            InitFontCharactes(NovelText.font, characterDataList);
            //拡張的な情報の初期化
            Additional.InitAfterCharacterInfo(this);
            //独自の改行処理を入れる
            AutoLineBreak(characterDataList);
            //行ごとの文字データを作成
            lineDataList = CreateLineList(characterDataList);
            //テキストのアンカーを適用する
            ApplyTextAnchor(lineDataList, NovelText.alignment);
            //Offsetを適用する
            ApplyOffset(lineDataList);
            //拡張的な情報の表示位置を初期化
            Additional.InitPosition(this);
            //当たり判定の情報を作成
            MakeHitGroups(characterDataList);
            isInitGraphicObjectList = false;
            IsRebuidFont            = false;
        }