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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Unity

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

Q&A

解決済

1回答

2620閲覧

unityでCS0119とCS1061の解決

kimkeimu

総合スコア2

Unity

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

0グッド

0クリップ

投稿2021/02/26 02:43

このコードにおいて
//会話を開始するの少し下の
villagerScript.SetState(VillagerScript.State, transform);
this.allMessage = villagerScript.GetConversation().GetConversationMessage();にエラーがあり。

Assets\RPG\Script\UnityChanTalkScript.cs(173,33): error CS0119: 'VillagerScript.State' is a type, which is not valid in the given context

Assets\RPG\Script\UnityChanTalkScript.cs(174,42): error CS1061: 'VillagerScript' does not contain a definition for 'GetConversation' and no accessible extension method 'GetConversation' accepting a first argument of type 'VillagerScript' could be found (are you missing a using directive or an assembly reference?)
が出てしまいした。解決方法を調べてもやり方がわかりませんでした。
教えていただきたいです。

using System.Collections; using System.Collections.Generic; using System.Text.RegularExpressions; using UnityEngine; using UnityEngine.UI; public class UnityChanTalkScript : MonoBehaviour { // 会話可能な相手 private GameObject conversationPartner; // 会話可能アイコン [SerializeField] private GameObject talkIcon = null; // TalkUIゲームオブジェクト [SerializeField] private GameObject talkUI = null; // メッセージUI private Text messageText = null; // 表示するメッセージ private string allMessage = null; // 使用する分割文字列 [SerializeField] private string splitString = "<>"; // 分割したメッセージ private string[] splitMessage; // 分割したメッセージの何番目か private int messageNum; // テキストスピード [SerializeField] private float textSpeed = 0.05f; // 経過時間 private float elapsedTime = 0f; // 今見ている文字番号 private int nowTextNum = 0; // マウスクリックを促すアイコン [SerializeField] private Image clickIcon = null; // クリックアイコンの点滅秒数 [SerializeField] private float clickFlashTime = 0.2f; // 1回分のメッセージを表示したかどうか private bool isOneMessage = false; // メッセージをすべて表示したかどうか private bool isEndMessage = false; void Start() { clickIcon.enabled = false; messageText = talkUI.GetComponentInChildren<Text>(); } void Update() { // メッセージが終わっているか、メッセージがない場合はこれ以降何もしない if (isEndMessage || allMessage == null) { return; } // 1回に表示するメッセージを表示していない if (!isOneMessage) { // テキスト表示時間を経過したらメッセージを追加 if (elapsedTime >= textSpeed) { messageText.text += splitMessage[messageNum][nowTextNum]; nowTextNum++; elapsedTime = 0f; // メッセージを全部表示、または行数が最大数表示された if (nowTextNum >= splitMessage[messageNum].Length) { isOneMessage = true; } } elapsedTime += Time.deltaTime; // メッセージ表示中にマウスの左ボタンを押したら一括表示 if (Input.GetButtonDown("Jump")) { // ここまでに表示しているテキストに残りのメッセージを足す messageText.text += splitMessage[messageNum].Substring(nowTextNum); isOneMessage = true; } // 1回に表示するメッセージを表示した } else { elapsedTime += Time.deltaTime; // クリックアイコンを点滅する時間を超えた時、反転させる if (elapsedTime >= clickFlashTime) { clickIcon.enabled = !clickIcon.enabled; elapsedTime = 0f; } // マウスクリックされたら次の文字表示処理 if (Input.GetButtonDown("Jump")) { nowTextNum = 0; messageNum++; messageText.text = ""; clickIcon.enabled = false; elapsedTime = 0f; isOneMessage = false; // メッセージが全部表示されていたらゲームオブジェクト自体の削除 if (messageNum >= splitMessage.Length) { EndTalking(); } } } } private void LateUpdate() { // 会話相手がいる場合はTalkIconの位置を会話相手の頭上に表示 if (conversationPartner != null) { talkIcon.transform.Find("Panel").position = Camera.main.GetComponent<Camera>().WorldToScreenPoint(conversationPartner.transform.position + Vector3.up * 2f); } } // 会話相手を設定 public void SetConversationPartner(GameObject partnerObj) { talkIcon.SetActive(true); conversationPartner = partnerObj; } // 会話相手をリセット public void ResetConversationPartner(GameObject parterObj) { // 会話相手がいない場合は何もしない if (conversationPartner == null) { return; } // 会話相手と引数で受け取った相手が同じインスタンスIDを持つなら会話相手をなくす if (conversationPartner.GetInstanceID() == parterObj.GetInstanceID()) { talkIcon.SetActive(false); conversationPartner = null; } } // 会話相手を返す public GameObject GetConversationPartner() { return conversationPartner; } // 会話を開始する public void StartTalking() { var villagerScript = conversationPartner.GetComponent<VillagerScript>(); villagerScript.SetState(VillagerScript.State, transform); this.allMessage = villagerScript.GetConversation().GetConversationMessage(); // 分割文字列で一回に表示するメッセージを分割する splitMessage = Regex.Split(allMessage, @"\s*" + splitString + @"\s*", RegexOptions.IgnorePatternWhitespace); // 初期化処理 nowTextNum = 0; messageNum = 0; messageText.text = ""; talkUI.SetActive(true); talkIcon.SetActive(false); isOneMessage = false; isEndMessage = false; // 会話開始時の入力は一旦リセット Input.ResetInputAxes(); } // 会話を終了する void EndTalking() { isEndMessage = true; talkUI.SetActive(false); // ユニティちゃんと村人両方の状態を変更する var villagerScript = conversationPartner.GetComponent<VillagerScript>(); villagerScript.SetState(VillagerScript.State.Wait); GetComponent<UnityChanScript>().SetState(UnityChanScript.State.Normal); Input.ResetInputAxes(); } }

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

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

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

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

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

guest

回答1

0

ベストアンサー

google翻訳
Assets\RPG\Script\UnityChanTalkScript.cs(173,33): error CS0119: 'VillagerScript.State'は型であり、指定されたコンテキストでは無効です

Assets\RPG\Script\UnityChanTalkScript.cs(174,42): error CS1061:「VillagerScript」には「GetConversation」の定義が含まれておらず、「VillagerScript」タイプの最初の引数を受け入れるアクセス可能な拡張メソッド「GetConversation」が見つかりませんでした(usingディレクティブまたはアセンブリ参照がありませんか?)

villagerScript.SetState(VillagerScript.State, transform);

スペルミスしてませんか。

投稿2021/02/26 05:50

y_waiwai

総合スコア87774

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

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

kimkeimu

2021/02/28 07:05

その通りでした。よくよく見たら違ってました! ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問