実現したいこと
Alianのあたり判定内でF2を押すとAlianが喋る仕様にしたいです。
AlianControllerクラスのカギGet!のログが表示されるところで
StartCoroutineを使ってAlienMessageクラスのtxt_speedメソッドを呼び出したいのですが
エラーが出たりゲーム再生するといきなり会話が始まってしまったりで困っています。
StartCoroutineの使い方を調べてみましたが、うまくできなかったのでご教示頂きたいです。
発生している問題・エラーメッセージ
現状
重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態 エラー CS0029 型 'AlienMessage' を 'UnityEngine.GameObject' に暗黙的に変換できません Assembly-CSharp Aliencontroller.cs 23 アクティブ 重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態 エラー CS1061 'GameObject' に 'StartCoroutine' の定義が含まれておらず、型 'GameObject' の最初の引数を受け付けるアクセス可能な拡張メソッド 'StartCoroutine' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足していないことを確認してください Assembly-CSharp Aliencontroller.cs 25 アクティブ
該当のソースコード
Alianが喋るスクリプト
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class AlienMessage : MonoBehaviour { public Text alien_msg; public GameObject button; public string[] font; int i; // Start is called before the first frame update void Start() { StartCoroutine(txt_speed()); } // Update is called once per frame void Update() { if (alien_msg.text == font[i]) { button.SetActive(true); } else { button.SetActive(true); } //button.SetActive(true); } /*public void msg_start() { StartCoroutine(txt_speed()); } public void msg_Updata() { button.SetActive(true); }*/ IEnumerator txt_speed() { foreach (char l in font[i].ToCharArray()) { alien_msg.text += l; yield return new WaitForSeconds(0.1f); } } public void goToNextMessage() { if (i < font.Length - 1) { i++; alien_msg.text = ""; StartCoroutine(txt_speed()); } else { alien_msg.text = ""; } } }
Alianコントローラー
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Aliencontroller : MonoBehaviour { // Start is called before the first frame update // Update is called once per frame bool IsNear; public int Alian_Message; void Update() { if (Input.GetKeyDown(KeyCode.F2)) { if (IsNear) { Debug.Log("カギGet!"); GameObject AlienMessage = GameObject.Find("MessagePanel_a").GetComponent<AlienMessage>(); AlienMessage.StartCoroutine("txt_speed"); } } } private void OnTriggerEnter2D(Collider2D collision) { if (collision.gameObject.tag == "Player") { IsNear = true; } } private void OnTriggerExit2D(Collider2D collision) { if (collision.gameObject.tag == "Player") { IsNear = false; } } }
試したこと
まずAliencontrollerのメンバー変数にAlien_Messageを追加。
メンバ変数Alien_Messageに「MessagePanel_a」についているAlienMessageスクリプトを参照させるために
GetComponentしました。
次にサイトを参考にAlien_Message.StartCoroutine("txt_speed");と書きました。
補足情報(FW/ツールのバージョンなど)
Unityバージョン:2020.3.19f1
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/04/02 11:35