//行データを作成する List <UguiNovelTextLine> CreateLineList(List <UguiNovelTextCharacter> characterDataList, float maxHeight) { //行データの作成&Y位置の調整 List <UguiNovelTextLine> lineList = new List <UguiNovelTextLine>(); //行データを作成 UguiNovelTextLine currentLine = new UguiNovelTextLine(); foreach (UguiNovelTextCharacter character in characterDataList) { currentLine.AddCharaData(character); //改行処理 if (character.IsBrOrAutoBr) { currentLine.EndCharaData(Generator); lineList.Add(currentLine); //次の行を追加 currentLine = new UguiNovelTextLine(); } } if (currentLine.Characters.Count > 0) { currentLine.EndCharaData(Generator); lineList.Add(currentLine); } if (lineList.Count <= 0) { return(lineList); } float y = 0; //行間 for (int i = 0; i < lineList.Count; ++i) { UguiNovelTextLine line = lineList[i]; float y0 = y; y -= line.MaxFontSize; //縦幅のチェック line.IsOver = IsOverMaxHeight(-y, maxHeight); //表示する幅を取得 if (!line.IsOver) { this.Height = -y; } this.PreferredHeight = -y; //Y座標を設定 line.SetLineY(y, Generator); //行間を更新 y = y0 - line.TotalHeight; } return(lineList); }
//行データを作成する List<UguiNovelTextLine> CreateLineList(List<UguiNovelTextCharacter> characterDataList) { //行データの作成&Y位置の調整 List<UguiNovelTextLine> lineList = new List<UguiNovelTextLine>(); //行データを作成 UguiNovelTextLine currentLine = new UguiNovelTextLine(); foreach (UguiNovelTextCharacter character in characterDataList) { currentLine.AddCharaData(character); //改行処理 if (character.IsBrOrAutoBr) { currentLine.EndCharaData(this); lineList.Add(currentLine); //次の行を追加 currentLine = new UguiNovelTextLine(); } } if (currentLine.Characters.Count > 0) { currentLine.EndCharaData(this); lineList.Add(currentLine); } if (lineList.Count <= 0) return lineList; float y = 0; //行間 for(int i = 0; i < lineList.Count; ++i) { UguiNovelTextLine line = lineList[i]; float y0 = y; y -= line.MaxFontSize; //縦幅のチェック line.IsOver = IsOverMaxHeight(-y); //表示する幅を取得 if (!line.IsOver) { this.height = -y; } //Y座標を設定 line.SetLineY(y, this); //行間を更新 y = y0 - line.TotalHeight; } return lineList; }