実現したいこと
ご閲覧いただきありがとうございます。私は、最近ゲームの個人制作を始めた ただの一般社会人です。
早速、本題に入ります。
現在、私は「Unity」を使って2Dゲームを制作しております。
命題の通り、画面をクリックする度に画像が切り替わるイベントを作りたく、以下のサイトを参考にCSを改変したところ下記のエラーメッセージが出てしまいました。
参考サイト:https://bokulog.org/unity-showlog/
この問題をどうにか解決する方法はございませんでしょうか?
また、参考になりそうなサイト等ございましたら、ご教示いただけますと嬉しい限りです。
よろしくお願いします。
発生している問題・分からないこと
GetComponent<Sprite>().sprite = PrologueImage[i]; に存在しないメソッドがあるらしいのですが、分からずじまいとなっております。
//Sprite sprite = PrologueImage[i]; の方ではエラーは発生しないものの、いざテストしたところうまくいきませんでした(もしかしたらUnityの方でアタッチ等の仕方が良くないのかもしれませんが…)
エラーメッセージ
error
1MouseClick.cs(38,36): error CS1061: 'Sprite' does not contain a definition for 'sprite' and no accessible extension method 'sprite' accepting a first argument of type 'Sprite' could be found (are you missing a using directive or an assembly reference?)
該当のソースコード
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.UI; 5using UnityEngine.SceneManagement; 6 7public class MouseClick : MonoBehaviour 8{ 9 [SerializeField] [Header("表示する画像")] private Sprite[] PrologueImage; 10 11 GameObject objCanvas = null; 12 //public Sprite sprite; 13 14 void Start() 15 { 16 objCanvas = gameObject.transform.Find("Canvas").gameObject; 17 objCanvas.SetActive(false); 18 } 19 20 void Update() 21 { 22 if (Input.GetMouseButtonDown(0)) 23 { 24 StartCoroutine("ShowLog"); 25 //Debug.Log("原因じゃないよ"); 26 } 27 } 28 29 IEnumerator ShowLog() 30 { 31 //GameObject objCaraName = objCanvas.transform.Find("PrologueImage").gameObject; 32 33 objCanvas.SetActive(true); 34 35 for (int i = PrologueImage.GetLowerBound(0); i <= PrologueImage.GetUpperBound(0); i++) 36 { 37 //Sprite sprite = PrologueImage[i]; 38 GetComponent<Sprite>().sprite = PrologueImage[i]; 39 40 yield return new WaitUntil(() => Input.GetMouseButtonDown(0)); 41 yield return null; 42 } 43 44 objCanvas.SetActive(false); 45 } 46}
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
こちらは参照元のコードになります。
[SerializeField] [Header("メッセージ(キャラ名)")] private string[] msgCaraName;
[SerializeField] [Header("メッセージ(内容)")] private string[] msgContent;
GameObject objCanvas = null;
void Start()
{
objCanvas = gameObject.transform.Find("Canvas").gameObject;
objCanvas.SetActive(false);
}
void Update()
{
if (Input.GetMouseButtonDown(0))
{
StartCoroutine("ShowLog");
}
}
IEnumerator ShowLog()
{
GameObject objCaraName = objCanvas.transform.Find("CaraName").gameObject;
GameObject objContent = objCanvas.transform.Find("Content").gameObject;
objCanvas.SetActive(true); for (int i = msgCaraName.GetLowerBound(0); i <= msgCaraName.GetUpperBound(0); i++) { objCaraName.GetComponent<Text>().text = msgCaraName[i]; objContent.GetComponent<Text>().text = msgContent[i]; yield return new WaitUntil(() => Input.GetKeyDown(KeyCode.Space)); yield return null; } objCanvas.SetActive(false);
}
補足
特になし
回答2件
あなたの回答
tips
プレビュー