@Farset

Передача значений массива в корутину — C#- Как осуществить?

using UnityEngine;
using UnityEngine.UI;
using System.Collections.Generic;
using System.Collections;
using System;
 
public class MainScript : MonoBehaviour {
    //Переменные
    private float score;//Очки
    private float scoreIncrease = 1;//Бонус к очкам
    private int LevelOfItem;
    private float bonusPerSec;
 
    //Arrays
    public float[] perSecondBonus;
    public float[] ItemCosts;
    //Обьекты
    public Slider Slider;//Слайдер к выпадению бонусса
 
    //Тексты вывода
    [Header("Текст, отвечающий за отображение очков")]
    public Text ScoreText;
    [Header("Текст, отвечающий за отображение бонуса нажатий в секунду")]
    public Text PerSecText;
    [Space]
    [Space]
    [Header("Магазин")]
    public List<Item> shopItems = new List<Item>();
    [Header("Текст цены на кнопках товаров")]
    public Text[] shopItemsCostText;
    [Header("Текст уровня на кнопках товаров")]
    public Text[] shopItemsLevelText;
 
    private void Start()
    {
        StartCoroutine(PerSecond());
    }
 
    private void FixedUpdate()
    {
            ScoreText.text = "" + score;//Вывод очков на экран
    }
    public void OnClick()
    {
        score += scoreIncrease;//
        Slider.value++;//Увеличение значения слайдера на 1
    }
 
 
    public void Buy_Item_CPS(int index)
    {
        score -= ItemCosts[index];
        LevelOfItem++;
        ItemCosts[index] *= 2.2f;
        shopItemsLevelText[index].text = "" + LevelOfItem;
        shopItemsCostText[index].text = "" + ItemCosts;
        StartCoroutine(PerSecond());
    }
 
 
    IEnumerator PerSecond(int index)
    {
        while (true) {
            score += LevelOfItem * perSecondBonus[index].value;//И вот здесь я затупил и не могу передать значения массива 
        yield return new WaitForSeconds(1);
            bonusPerSec = LevelOfItem * perSecondBonus[index].value;//и здесь
        }
    }
 
 
 
 
 
 
 
 
 
 
}
 
 
[Serializable]
public class Item
{
 
}

По моей задумке я указываю в юньке для каждого обьекта своё значение множителя(float) "bonusPerSec" и передаю его в корутину, но я не знаю как это реализовать, так как просто не знаю метода передачи значения массива в корутину - прошу помочь!
И в плюс к этому при старте корутины нужно указывать индекс, как это осуществить я тоже, к сожалению, не знаю...
Заранее спасибо!
  • Вопрос задан
  • 219 просмотров
Решения вопроса 1
BasmanovDaniil
@BasmanovDaniil
Геймдизайнер-телепат
Массивы в корутины передаются так же как и во все другие методы:
using System.Collections;
using UnityEngine;

public class CoroutineExample : MonoBehaviour
{
    private void Start()
    {
        StartCoroutine(Example(new float[] {0, 1, 2, 3}));
    }

    private IEnumerator Example(float[] floats)
    {
        yield return null;
    }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы