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

Помогите найти ошибку в коде Unity (я новичок)

Азиза Салаватова Ученик (32), на голосовании 6 месяцев назад
Что означает эта ошибка и как её исправить?
Assets\Script\GameManager.cs(74,21): error CS0246: The type or namespace name 'Brick' could not be found (are you missing a using directive or an assembly reference?)
Голосование за лучший ответ
MvC Просветленный (35136) 7 месяцев назад
там же написаны строки-где ошибки в коде
Андрей Панарин Искусственный Интеллект (242620) 7 месяцев назад
Где-то в вашем коде класса GameManager (вероятно, на 74-й или 21-й строчке) есть слово Brick, которое ссылается на несуществующий класс Brick.
Азиза СалаватоваУченик (32) 7 месяцев назад
public class GameManager : MonoBehaviour
{
public int level = 1;
public int score = 0;
public int lives = 2;
public Ball ball { get; private set; }
public Paddle paddle { get; private set; }
public Brick[] bricks { get; private set; }

private void Awake()
{
DontDestroyOnLoad(this.gameObject);

SceneManager.sceneLoaded += OnLevelLoaded;
}

private void Start()
{
NewGame();
}

private void NewGame()
{
this.score = 0;
this.lives = 3;

LoadLevel(1);
}
Андрей Панарин Искусственный Интеллект (242620)
 public Brick[] bricks { get; private set; }  
У вас есть файл вроде Brick.cs с классом Brick внутри?
Азиза СалаватоваУченик (32) 7 месяцев назад
private void OnLevelLoaded(Scene scene, LoadSceneMode mode)
{
this.ball = FindObjectOfType<Ball>();
this.paddle = FindObjectOfType<Paddle>();
this.bricks = FindObjectsOfType<Brick>();
}

private void ResetLevel()
{
this.ball.ResetBall();
this.paddle.ResetPaddle();
}

private void GameOver()
{
NewGame();
}

public void Miss()
{
this.lives--;

if (this.lives > 0)
{
ResetLevel();
}
else
{
GameOver();
}
}

private void LoadLevel(int level)
{
this.level = level;

SceneManager.LoadScene("Level" + level);
}

public void Hit(Brick brick)
{
this.score += brick.points;

if (Cleared())
{
LoadLevel(this.level + 1);
}
}
Азиза СалаватоваУченик (32) 7 месяцев назад
private bool Cleared()
{
for (int i = 0; i < this.bricks.Length; i++)
{
if (this.bricks[i].gameObject.activeInHierarchy && !this.bricks[i].unbreakable)
{
return false;
}
}

return true;
}
}
Азиза СалаватоваУченик (32) 7 месяцев назад
private void OnLevelLoaded(Scene scene, LoadSceneMode mode)
{
this.ball = FindObjectOfType<Ball>();
this.paddle = FindObjectOfType<Paddle>();
this.bricks = FindObjectsOfType<Brick>();
}

private void ResetLevel()
{
this.ball.ResetBall();
this.paddle.ResetPaddle();

for (int i = 0; 1 < this.bricks.Length; i++)
{
this.bricks[i].ResetBrick();
}
}

private void GameOver()
{
NewGame();
}

public void Miss()
{
this.lives--;

if (this.lives > 0)
{
ResetLevel();
}
else
{
GameOver();
}
}

private void LoadLevel(int level)
{
this.level = level;

SceneManager.LoadScene("Level" + level);
}
Азиза СалаватоваУченик (32) 7 месяцев назад
public void Hit(Brick brick)
{
this.score += brick.points;

if (Cleared())
{
LoadLevel(this.level + 1);
}
}

private bool Cleared()
{
for (int i = 0; i < this.bricks.Length; i++)
{
if (this.bricks[i].gameObject.activeInHierarchy && !this.bricks[i].unbreakable)
{
return false;
}
}

return true;
}
}
Азиза СалаватоваУченик (32) 7 месяцев назад
не то скинул
Азиза СалаватоваУченик (32) 7 месяцев назад
public class Bricks : MonoBehaviour
{
public SpriteRenderer spriteRenderer { get; private set; }
public Sprite[] states;
public int health { get; private set; }
public int points = 100;
public bool unbreakable;

private void Awake()
{
this.spriteRenderer = GetComponent<SpriteRenderer>();
}

private void Start()
{
ResetBrick();
}

public void ResetBrick()
{
this.gameObject.SetActive(true);

if (!this.unbreakable)
{
this.health = this.states.Length;
this.spriteRenderer.sprite = this.states[ this.health - 1];
}
}
Азиза СалаватоваУченик (32) 7 месяцев назад
private void Hit()
{
if (this.unbreakable)
{
return;
}

this.health --;

if ( this.health <= 0)
{
this.gameObject.SetActive(false);
}
else
{
this.spriteRenderer.sprite = this.states[ this.health - 1];
}
FindObjectOfType<GameManager>().Hit(this);
}

private void OnCollisionEnter2D(Collision2D collision)
{
if ( collision.gameObject.name == "Ball")
{
Hit();
}
}
}
Андрей Панарин Искусственный Интеллект (242620) Класс называется Bricks, а не Brick. Наверное, в этом проблема.
Азиза СалаватоваУченик (32) 7 месяцев назад
спасибо помогло
Похожие вопросы