Загрузка данных


Square.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class Square : MonoBehaviour
{
   public Vector2 targetPosition;
   public float moveStep;
    public bool isTrap;
    public float speedFactor;
    public float scaleFactor;
    public int catchCount;
 
    void Start()
    {
        if (isTrap == false)
        {
            Player.squares.Add(this);
        }
 
        targetPosition = GetRandomPoint();
    }
 
    void Update()
    {
        transform.position = Vector2.MoveTowards(transform.position,
            targetPosition, moveStep * Time.deltaTime);
 
 
        if((Vector2)transform.position == targetPosition)
        {
            targetPosition = GetRandomPoint();
        }
    }
 
    Vector2 GetRandomPoint()
    {
        Vector2 randomVector = new Vector2();
 
        randomVector.x = Random.Range(-6, 6);
        randomVector.y = Random.Range(-3, 3);
 
        return randomVector;
    }
 
    void OnMouseDown()
    {
        if (isTrap)
        {
            Player.Defeat();
        }
        else
        {
            Catch();
        }
    }
 
    void Catch()
    {
        Player.score++;
        catchCount--;
 
        if (catchCount == 0)
        {
            Player.squares.Remove(this);
            Destroy(gameObject);
        }
        else
        {
            moveStep += speedFactor;
            transform.localScale = (Vector2)transform.localScale - new Vector2(scaleFactor, scaleFactor);
            transform.position = GetRandomPoint();
        }
    }
 
}

Player.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
 
public class Player : MonoBehaviour
{
    public static List<Square> squares;
 
    public static int score = 0;
 
    void Awake()
    {
        squares = new List<Square>();
    }
 
    void Update()
    {
        if (squares.Count == 0)
        {
            Victory();
        }
    }
 
    public static void Defeat()
    {
        score = 0;
        UI.ShowDefeatPanel();
    }
 
    public static void Victory()
    {
        UI.ShowVictoryPanel();
    }
 
    public static void Restart()
    {
        int index = SceneManager.GetActiveScene().buildIndex;
        SceneManager.LoadScene(index);
    }
 
}
 


UI.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
 
public class UI : MonoBehaviour
{
	static UI singleton;
 
	public Text scoreText;
	public GameObject panel;
	public Text panelScoreText;
	public Text defeatText;
	public Text victoryText;
 
	void Awake()
	{
		singleton = this;
	}
 
 
	void Update()
	{
		scoreText.text = Player.score.ToString();
	}
 
	public static void ShowVictoryPanel()
	{
		singleton.panel.SetActive(true);
		singleton.victoryText.gameObject.SetActive(true);
		singleton.panelScoreText.text = Player.score.ToString();
	}
 
	public static void ShowDefeatPanel()
	{
		singleton.panel.SetActive(true);
		singleton.defeatText.gameObject.SetActive(true);
		singleton.panelScoreText.text = Player.score.ToString();
	}
 
	public void OnClickRestart()
	{
		Player.Restart();
	}
}