実現したいこと
unityで作ったゲームをwebGLで正常に動かしたい
前提
最近、自分で作ったゲームをunityroomに投稿したいと思い、webGLでbuildまでできたのですが、いざ動かしてみると、正常に動かないです。例えば、消えるはずのオブジェクトが消えなかったり、なぜか会話の最初に戻ったりします。更に明らかに重くなっています。このような時、どうすれば解決できるでしょうか?unityのGameでは想定通り動きました。ゲーム自体はwebでなければ正しく動きます。
発生している問題・エラーメッセージ
選択肢を押したときに、押したほうのボタンしか消えない なぜかイベントが巻き戻る ゲームが重くなる
choisee.cs
1using System.Collections; 2using System.Collections.Generic; 3using TMPro; 4using Unity.VisualScripting; 5using UnityEngine; 6 7 8public class choisee : MonoBehaviour 9{ 10 public TextMeshProUGUI textt1; 11 text1 text; 12 choise choises; 13 private void Start() 14 { 15 GameObject obj = GameObject.Find("Square"); 16 text = obj.GetComponent<text1>(); 17 GameObject obj2 = obj.transform.Find("Canvas/21").gameObject; 18 choises = obj2.GetComponent<choise>(); 19 } 20 // Start is called before the first frame update 21 public void sentakusi(string one) 22 { 23 textt1.text = one; 24 this.gameObject.SetActive(true); 25 } 26 public void click() 27 { 28 this.gameObject.SetActive(false); 29 text.choose = 2; 30 text.choisee = false; 31 //ここがうまく動かない 32 choises.gameObject.SetActive(false); 33 text.ikeeee(); 34 } 35}
choise.cs
1using System.Collections; 2using System.Collections.Generic; 3using TMPro; 4using Unity.VisualScripting; 5using UnityEngine; 6 7 8public class choise : MonoBehaviour 9{ 10 public TextMeshProUGUI textt1; 11 text1 text; 12 choisee choises; 13 private void Start() 14 { 15 GameObject obj = GameObject.Find("Square"); 16 text = obj.GetComponent<text1>(); 17 GameObject obj2 = obj.transform.Find("Canvas/22").gameObject; 18 choises = obj2.GetComponent<choisee>(); 19 } 20 // Start is called before the first frame update 21 public void sentakusi(string one) 22 { 23 textt1.text = one; 24 this.gameObject.SetActive(true); 25 } 26 public void click() 27 { 28 this .gameObject.SetActive(false); 29 text.choose = 1; 30 text.choisee = false; 31 text.ikeeee(); 32 //ここがうまく動かない 33 choises.gameObject.SetActive(false); 34 } 35}
start.cs
1using System.Collections; 2using System.Linq; 3using Unity.VisualScripting; 4using UnityEngine; 5 6public class start : MonoBehaviour 7{ 8 SpriteRenderer sprite; 9 public bool wait = false; 10 text1 text; 11 end ending; 12 restart res; 13 14 void Start() 15 { 16 sprite = GetComponent<SpriteRenderer>(); 17 GameObject obj = GameObject.Find("Square"); 18 text = obj.GetComponent<text1>(); 19 Transform obj2 = this.transform.Find("Canvas/end"); 20 ending = obj2.GetComponent<end>(); 21 Transform obj3 = this.transform.Find("Canvas/retry"); 22 res= obj3.GetComponent<restart>(); 23 // Coroutine を開始する 24 StartCoroutine(FadeOut()); 25 } 26 27 // Coroutine の定義 28 IEnumerator FadeOut() 29 { 30 Color color = sprite.color; 31 // 透明度が0より大きい場合 32 while (sprite.color.a > 0) 33 { 34 // 10フレーム待つ 35 yield return new WaitForSeconds(10 * Time.deltaTime); 36 // 透明度を0.01ずつ減らす 37 color.a -= 0.01f; 38 sprite.color = color; 39 } 40 wait = true; 41 } 42 IEnumerator Black() 43 { 44 //ここがうまく作動しない 45 Color color = sprite.color; 46 if (sprite.color.a >= 1.27) 47 { 48 ending.Theend(text.end); 49 res.Reset(); 50 } 51 if (sprite.color.a < 1.27) 52 { 53 yield return new WaitForSeconds(13 * Time.deltaTime); 54 // 透明度を0.01ずつ減らす 55 color.a += 0.01f; 56 sprite.color = color; 57 Blackout(); 58 } 59 } 60 public void Blackout() { 61 text.choisee = true; 62 if (text.end == 1 || text.end == 3 || text.end == 4 || text.end == 6||text.end==7) 63 { 64 if (text.number.Length == 1) 65 { 66 if (text.real==5) 67 { 68 text.number= new int[4] {1,2,3,4}; 69 } 70 else 71 { 72 text.number = new int[1] { 5 }; 73 } 74 } 75 else 76 { 77 text.number = text.number.Where(e => e != text.real).ToArray(); ; 78 } 79 } 80 text.textter = 0; 81 text.real = 0; 82 text.SAVE(); 83 StartCoroutine(Black()); 84 } 85}
試したこと
時間がたってから再度buildしたり、別のブラウザで動かしてみました。
補足情報(FW/ツールのバージョンなど)
unityのバージョンは2022.3です。
回答2件
あなたの回答
tips
プレビュー