🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

2141閲覧

UnityタイムラインでTextを1文字ずつ表示したい

Ayber

総合スコア8

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2021/02/08 13:32

UnityタイムラインでTextを1文字ずつ表示したい

こちらのサイトに掲載されているNarrationBehaviour.csを使って一文字ずつTextが表示されるアニメーションが
作りたいのですが、この通りにコピー&ペーストすると
現在のコンテキストにmParsedTextという名前は存在しません。とエラーが出てしまいます。
確かにコード内でどこを探してもこのパラメータは作られておらず、どこに入れれば解決するのかが分かりません。

https://qiita.com/cha84rakanal/items/1a6997ea31bf7121dddf

該当のソースコード:NarrationBehaviour.cs

C#

1using UnityEngine; 2using UnityEngine.Playables; 3using TMPro; 4 5public class NarrationBehaviour : PlayableBehaviour 6{ 7 public TMP_Text mTextUI { get; set; } 8 9 public override void PrepareFrame(Playable playable, FrameData info) 10 { 11 if (mTextUI != null) 12 { //var mParsedText = int.Parse(mTextUI); 13 var progress = (float)(playable.GetTime() / playable.GetDuration()); 14 var current = Mathf.Lerp(0, mParsedText.Length, progress); 15 var count = Mathf.CeilToInt(current); 16 17 mTextUI.maxVisibleCharacters = count; 18 } 19 } 20}

試したこと :NarrationPlayableAsset.cs

NarrationPlayableAsset.csを作成し、クラス名以外はサイト内でTemplatePlayableAsset.csとして公開されているソースコードを
そのまま貼り付けています。

C#

1 2using UnityEngine; 3using UnityEngine.Playables; 4 5public class NarrationPlayableAsset : PlayableAsset 6{ 7 [SerializeField] 8 private ExposedReference<GameObject> templateGameObject; 9 10 public TemplatePlayableBehaviour template = new TemplatePlayableBehaviour(); 11 12 // Factory method that generates a playable based on this asset 13 public override Playable CreatePlayable(PlayableGraph graph, GameObject go) 14 { 15 var playable = ScriptPlayable<TemplatePlayableBehaviour>.Create(graph, template); 16 17 // Get PlayableBehaviour 18 var behaviour = playable.GetBehaviour(); 19 20 // Resolve Reference 21 behaviour.templateGameObject = templateGameObject.Resolve(graph.GetResolver()); 22 23 return playable; 24 } 25}

補足情報(FW/ツールのバージョンなど)

使用バージョン:Unity2020.2.0f1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

確かにmParsedTextが存在しない様子ですね。記事には「以下のコードは初期化を省略しています」とありますが、これも省略されてしまっているのかもしれません。
補ってみるとしたら下記のような感じでしょうか...?もしQiitaのアカウントをお持ちでしたら、Tatsuya Minagawaさんに直接おたずねいただくというのも一案かもしれないですね。

C#

1using TMPro; 2using UnityEngine; 3using UnityEngine.Playables; 4 5public class NarrationBehaviour : PlayableBehaviour 6{ 7 public TMP_Text mTextUI { get; set; } 8 9 private string mParsedText = string.Empty; 10 11 public override void OnBehaviourPlay(Playable playable, FrameData info) 12 { 13 if (mTextUI != null) 14 { 15 mTextUI.ForceMeshUpdate(); 16 mParsedText = mTextUI.GetParsedText(); 17 } 18 } 19 20 public override void PrepareFrame(Playable playable, FrameData info) 21 { 22 if (mTextUI != null) 23 { 24 var progress = (float)(playable.GetTime() / playable.GetDuration()); 25 var current = Mathf.Lerp(0, mParsedText.Length, progress); 26 var count = Mathf.CeilToInt(current); 27 mTextUI.maxVisibleCharacters = count; 28 } 29 } 30}

C#

1using TMPro; 2using UnityEngine; 3using UnityEngine.Playables; 4 5public class NarrationPlayableAsset : PlayableAsset 6{ 7 [SerializeField] 8 private ExposedReference<TMP_Text> text; 9 10 private readonly NarrationBehaviour narration = new NarrationBehaviour(); 11 12 public override Playable CreatePlayable(PlayableGraph graph, GameObject go) 13 { 14 var playable = ScriptPlayable<NarrationBehaviour>.Create(graph, narration); 15 var behaviour = playable.GetBehaviour(); 16 behaviour.mTextUI = text.Resolve(graph.GetResolver()); 17 return playable; 18 } 19}

投稿2021/02/08 20:48

Bongo

総合スコア10811

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Ayber

2021/02/09 08:24

無事に動作致しました、本当にありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問