質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
87.20%
Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Unity

Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

解決済

ノベルゲーム風のテキストを4つ作り、それを1から順に4まで表示させては消していく感じで、最後にシーン遷移までしたい

PotePui
rara

総合スコア66

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Unity

Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

1回答

0リアクション

1クリップ

239閲覧

投稿2022/08/15 14:43

実現したいこと

  • DOTweenを利用し、

まず、UI上のtext_1のテキストをノベル風のアニメーションを付けたうえで、
一定時間経過後に削除し、次のtext_2のTextMeshProUGUIを表示させたい

  • 次は同様に、次のtext_2の表示が一定時間経過後に全て終わったら、

次のtext_3のテキストを表示させ、text_2は破棄、または非表示にしたい

  • これを繰り返すことで、

ライトノベル風に文字を表示させていきたいです。

参考サイト
ノベルゲームのような文章表示
https://unity-yuji.xyz/dotween-pro-textmeshpro-animation/

発生している問題・エラーメッセージ

・text:空オブジェクトが非アクティブ
・text_1からtext_4までのオブジェクトを破棄もしくは、非表示できない

該当のソースコード

C#

using System.Collections; using System.Collections.Generic; using TMPro; using UnityEngine; using DG.Tweening; public class Test : MonoBehaviour { void Start() { AAA(); } private void AAA() { var objs = GameObject.FindGameObjectsWithTag("Title"); foreach (var obj in objs) { TextMeshProUGUI text = obj.GetComponent<TextMeshProUGUI>(); var str = text.text; text.text = ""; StartCoroutine(EaseLinear(text, str)); } } private IEnumerable EaseLinear(TextMeshProUGUI text, string str) { text.DOText(str, 3.0f).SetEase(Ease.Linear); yield return new WaitForSeconds(1f); } }

試したこと

まず
テキストのオブジェクトに名前をtext_1,2,3,4と数字を割り振っていることと、
TitleというTagをTextMeshProUGUIオブジェクトに設定しています。
具体的には、以下になります。
イメージ説明

この状態で、
GameObject配列の取得は、

C#

var objs = GameObject.FindGameObjectsWithTag("Title") foreach (var ob in objs){ }

を基本に使おうと思っています。
コードの中にも記載されているかなと思います。

問題なのが、このforeach文の中で、obにはtext_1,2,3,4のGameObjectが入っています。

そこからTextMeshProUGUIコンポーネントを取得し、DOTweenを使ってAnimationをするところまでは出来るとしても、
その前後、

text_1のみまずはsetActive(true)にし、他はfalseにすること
・次に、テキストが変わるごとに前のテキストが非表示になり、次のテキストが表示にされるという箇所ができない

です。

最後に全てのテキストが表示され終わったら、次のシーンへ遷移ことを考えています。

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

unity 2021.3.1f
visual studio 2022

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

y_waiwai

2022/08/15 21:18

現状ではどういう動作となっているのか詳しく説明しよう

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Unity

Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。