Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Error CS0019: Operator '+=' cannot be applied to operands of type 'double[]' and 'double'

tirman25 Ученик (131), на голосовании 5 месяцев назад
1)
 using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ShopController : MonoBehaviour
{
public GameDataContainer dataContainer;

public void Shop(int id)
{
if (dataContainer.Bitcoins <= 0) { dataContainer.Bitcoins = 0; return; }

if (dataContainer.Bitcoins >= dataContainer.costs[id] && dataContainer.Bitcoins != 0)
{
dataContainer.Bitcoins -= dataContainer.costs[id];
dataContainer.costs[id] *= GameDataContainer.MYLIPLY_VALUE;
dataContainer.clickPowers += dataContainer.clickPowers[id];
}
}
}
2)

 using UnityEngine;
using UnityEngine.UI;

public class GameDataContainer : MonoBehaviour
{
public const double MYLIPLY_VALUE = 1.07;

[Header("Score")]
public double clickPower = 1;
public double Bitcoins = 0;
public Text scoreText;

[Header("Shop Controller")]
public double[] costs;
public double[] clickPowers;
[Space]
public Text[] costTexts;
public Text[] clickPowerText;
}

3)

 using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Click : MonoBehaviour
{
[SerializeField] private GameDataContainer dataContainer;
public Text moneyText;

public GameObject bitcoin;
public Transform spawnPoint;

public void ButtonClick()
{
dataContainer.Bitcoins += dataContainer.clickPower;

Instantiate(bitcoin, spawnPoint.position, Quaternion.identity);
}

void Update()
{
moneyText.text = bitcoin.ToString();
}
}
 Если что я новичёк в этом деле и с первого раза могу не понять*
Я написал код для Игры Кликера (1) и добавил систему Апгрейда клика (2),(3), но мне говорят что оператор (+=) не может быть применет к командам типа double[] и double. Я и using static System.Math; пробовал, все сайты перешарил, все видео пересмотрел, что только не менял в коде, а ошибка все та же... Помогите пожалуйста!
Голосование за лучший ответ
Лев Перфилов Просветленный (26074) 6 месяцев назад
Если что, ты не можешь просто взять и сложить массив с числом, для этого нужно пересоздавать массив с размером на 1 больше и в последний индекс назначить число.
Терр Онтал Мудрец (12753) 6 месяцев назад
Ты сам не понимаешь, что ты хочешь сделать. Но ошибка твоя - элементарная и глупая. Почему ты вообще решил складывать массив с числом? Что ты этим имел ввиду?
tirman25Ученик (131) 6 месяцев назад
Я хотел сделать так чтобы про покупке Апгрейда монет за один клик получалось +1. А как я могу это исправить?
Алексей Пупок Мастер (1126) 6 месяцев назад
Оператор += не определен для массивов и скаляров в C#.
Вы не можете добавить double в массив чисел двойной точности с помощью оператора +=. Чтобы исправить эту ошибку, нужно указать, к какому элементу массива вы хотите добавить значение, например:

 dataContainer.clickPowers[id] += dataContainer.clickPowers[id]; 
Можете использовать List<double> вместо массива, что позволит
 public List clickPowers = new List(); 

public void Shop(int id)
{
clickPowers.Add(dataContainer.clickPowers[id]);
}
использовать метод Add для добавления нового элемента в список
tirman25Ученик (131) 6 месяцев назад
Да, я знаю, я тупой, но я действительно не знаю куда мне добавлять это...
Алексей Пупок Мастер (1126) Тимофей Федоровна, Вы не тупой, просто объясните зачем и что вы добавляете в массив и мы с Вами попробуем решить Вашу проблему
Похожие вопросы