[ad_1]
C#
1 using System.Collections; 2 using System.Collections.Generic; 3 using UnityEngine; 4 using UnityEngine.UI; 5 using TMPro; 6 using UnityEngine.Events; 7 using UnityEngine.EventSystems; 8 using UnityEngine.SceneManagement; 9 10 public class Ahivments : MonoBehaviour 11 { 12 public int total_Coin_Vanya; 13 public int Coin_Vanya; 14 [SerializeField] bool isFirst; 15 16 17 public string[] arrayTitles; 18 public Sprite[] arraySprites; 19 public GameObject button; 20 public GameObject content; 21 22 private List<GameObject> list = new List<GameObject>(); 23 private VerticalLayoutGroup _group; 24 25 26 // Start is called before the first frame update 27 void Start() 28 { 29 Coin_Vanya = PlayerPrefs.GetInt("Coin_Vanya"); 30 total_Coin_Vanya = PlayerPrefs.GetInt("total_Coin_Vanya"); 31 PlayerPrefs.SetInt("isFirst", isFirst ? 1 : 0); 32 33 RectTransform recT = content.GetComponent<RectTransform>(); 34 recT.transform.localPosition = new Vector3(0.0f, 0.0f, 0.0f); 35 _group = GetComponent<VerticalLayoutGroup>(); 36 setAchievs(); 37 38 if(isFirst) 39 { 40 StartCoroutine(IdleFarm()); 41 } 42 43 } 44 45 private void RemovedList() 46 { 47 foreach (var elem in list) 48 { 49 Destroy(elem); 50 } 51 list.Clear(); 52 } 53 54 void setAchievs() 55 { 56 RectTransform recT = content.GetComponent<RectTransform>(); 57 recT.transform.localPosition = new Vector3(0.0f, 0.0f, 0.0f); 58 RemovedList(); 59 if (arrayTitles.Length > 0) 60 { 61 var pr1 = Instantiate(button, transform); 62 var h = pr1.GetComponent<RectTransform>().rect.height; 63 var tr = GetComponent<RectTransform>(); 64 tr.sizeDelta = new Vector2(tr.rect.width, h * arrayTitles.Length); 65 Destroy(pr1); 66 for (var i = 0; i < arrayTitles.Length; i++) 67 { 68 var pr = Instantiate(button, transform); 69 pr.GetComponentInChildren<Text>().text = arrayTitles[i]; 70 pr.GetComponentsInChildren<Image>()[1].sprite = arraySprites[i]; 71 var i1 = i; 72 pr.GetComponent<Button>().onClick.AddListener(() => GetAchievement(i1)); 73 list.Add(pr); 74 } 75 } 76 } 77 78 void GetAchievement(int id) 79 { 80 switch(id) 81 { 82 83 case 0: 84 Debug.Log(id); 85 break; 86 87 case 1: 88 Debug.Log(id); 89 Coin_Vanya += 10; 90 PlayerPrefs.SetInt("Coin_Vanya", Coin_Vanya); 91 break; 92 } 93 } 94 95 96 97 IEnumerator IdleFarm() 98 { 99 yield return new WaitForSeconds(1); 100 Coin_Vanya++; 101 Debug.Log(Coin_Vanya); 102 PlayerPrefs.SetInt("Coin_Vanya", Coin_Vanya); 103 StartCoroutine(IdleFarm()); 104 } 105 106 public void ToMeinMenu() 107 { 108 SceneManager.LoadScene(0); 109 } 110 }
私が試したこと:
コードを読み取ろうとしましたが、何も気づきませんでした。助けてください
解決策1のコメントから: 69行と36行
解決策 1
どの行でエラーが発生したかは説明していませんが、エラーの最後にあると思います IdleFarm
方法。 メソッド宣言は IEnumerator IdleFarm()
であるため、コンパイラは最後に何かを返すことを期待しています。 しかし、メソッドの最後には何もありません。 追加してみる yield break;
最後の行として。
[ad_2]
コメント