Только вызов присваивания, инкремент, декремент, ожидание и новые выражения объекта могут использоваться в качестве оператора Unity Pong Game

Недавно я начал создавать игру Pong в Unity с помощью этого руководства https://youtu.be/YHSanceczXY и одного из коды не работают

enter code here 
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

    public class Goal : MonoBehaviour
    {
    public bool isPlayer1Goal;

    private void OnTriggerEnter2D(Collider collision)
    {
        if (collision.gameObject.CompareTag("Ball"))
        {
            if (!isPlayer1Goal)
            {
                Debug.Log("Player 2 Scored...");
                GameObject.Find("GameManager").GetComponent<GameManager>().Player2Scored;
            }
            else
            {
                Debug.Log("Player 1 Scored...");
                GameObject.Find("GameManager").GetComponent<GameManager>().Player1Scored;
            }
        }
    }
}

person Alan Brzoza    schedule 03.07.2021    source источник
comment
Операторы программы должны что-то делать, то есть иметь явный побочный эффект. Получение значений свойств Player2Scored и Player1Scored ничего не делает, он просто получает те значения, которые затем немедленно отбрасываются. Если это не свойства, то, возможно, вы забыли круглые скобки после их имен, необходимых для вызова методов. Смотрите дубликаты.   -  person Peter Duniho    schedule 03.07.2021


Ответы (1)


Эта строка кода ничего не делает:

GameObject.Find("GameManager").GetComponent<GameManager>().Player1Scored;

Он преобразуется в значение, но с этим значением ничего не делается. Это логически эквивалентно такой строке кода:

1;

Судя по использованию, похоже, что вы намеревались зарегистрировать это значение. Для этого вы должны использовать Debug.Log() так же, как и в предыдущей строке:

Debug.Log("Player 1 Scored...");
Debug.Log(GameObject.Find("GameManager").GetComponent<GameManager>().Player1Scored);

Или, возможно, поместить их в одну строку:

Debug.Log($"Player 1 Scored... {GameObject.Find("GameManager").GetComponent<GameManager>().Player1Scored}");
person David    schedule 03.07.2021