//テキストデータの再作成
        bool TryUpdateTextData(string text)
        {
            if (CurrentChangeType != ChagneType.All && this.TextData != null && this.TextData.OriginalText == text)
            {
                return(false);
            }
            else
            {
                //TextData作成
                this.textData = new TextData(text);
                if (isDebugLog)
                {
                    Debug.Log(this.TextData.ParsedText.OriginalText);
                }

                //文字データを作成
                this.characterDataList = CreateCharacterDataList(this.TextData);
                //拡張的な情報を作成
                this.additional = new UguiNovelTextGeneratorAdditional(this.CharacterDataList, this);
                //フォントの文字画像を準備・設定
                InitFontCharactes(NovelText.font, this.CharacterDataList);
                //拡張的な情報の初期化
                Additional.InitAfterCharacterInfo(this);
                return(true);
            }
        }
Esempio n. 2
0
        //各文字の情報を作成
        //フォントのテクスチャ情報から文字の大きさなどを取得し、各文字の基本情報を初期化する
        internal void BuildCharcteres()
        {
            //禁則処理等、すべての情報を再度作成
            Profiler.BeginSample("BuildCharcteres");

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

            //文字データを作成
            this.CharacterDataList = CreateCharacterDataList(this.TextData);
            //拡張的な情報を作成
            this.Additional = new UguiNovelTextGeneratorAdditional(this.CharacterDataList, this.Generator);
            //フォントの文字画像を準備・設定
            FontInfoBuilder.InitFontCharactes(NovelText.font, this.CharacterDataList, this.Additional);
            //拡張的な情報の初期化
            Additional.InitAfterCharacterInfo(this.Generator);

            //描画範囲のサイズに合わせて自動改行
            this.PreferredWidth = CalcPreferredWidth(this.CharacterDataList);

            ClearGraphicObjectList();
            Profiler.EndSample();
        }
Esempio n. 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;
        }