unity.system; Не работают ивенты

92
24 ноября 2021, 00:50

Есть две части кода:

using UnityEngine;
using UnityEngine.Events;
public class cubeCollisionDetector : MonoBehaviour
{
    public UnityEvent scoreUp;
    public UnityEvent scoreDown;
    private string cubeName;
    private string[] cubeNameMassive;
    public void OnCollisionEnter(Collision collision)
    {
        if (collision.transform.tag == "sphere")
        {
            cubeName = gameObject.name;
            Destroy(GameObject.Find(gameObject.name));
            string nameToCount = gameObject.name.Split('(')[0];
            string[] cubeNameMassive = nameToCount.Split('/');
            string colour = cubeNameMassive[3];
            if (colour.Contains("red"))
            {
                scoreUp.Invoke();
            }
            else if (colour.Contains("green"))
            {
                scoreDown.Invoke();
            }
        }
    }
}

и

using UnityEngine;
using UnityEngine.UI;
public class scoringScript : MonoBehaviour
{
    static private int scoring = 0;
    public void scoringUpMethod()
    {
        scoring++;
        Debug.Log(scoring);
        GetComponent<Text>().text = "scoring: " + scoring.ToString();
    }
    public void scoringDownMethod()
    {
        scoring--;
        Debug.Log(scoring);
        GetComponent<Text>().text = "scoring: " + scoring.ToString();
    }
}
Answer 1

Потому что Вы собственноручно написанным кодом при запуске игры удаляете свои настройки, заданные в редакторе:

Класс cubeCollisionDetector в методе Start заменяет ссылки, заданные в редакторе.

Условия

if (scoreUp != null)
    ...
if (scoreDown != null)
    ...

выполняются, т.к. Вы задали ссылки на методы в другом скрипте. Поэтому код работает должным образом - "затирает" старое значение, заданное Вами, на new UnityEvent()

READ ALSO
Как упростить код включения/отключения компонентов через GetComponent

Как упростить код включения/отключения компонентов через GetComponent

Как проще и красивей записать следующий код :

237
Поток из консоли и с чем его едят

Поток из консоли и с чем его едят

Мне стало интересно, что именно происходит в данном коде:

133
Обновление базы данных на сервере данными полученными по почте

Обновление базы данных на сервере данными полученными по почте

Необходимо создать личный кабинет клиента бухгалтерской фирмыВ личном кабинете для пользователя будет доступна информация о сдаче налоговой...

131