GAMEDEV, VR/AR & BLOCKCHAIN
Вакансии
Приглашаем разработчиков Unity и Enreal Engine 4, а также
3D художников для участия в наших образовательных программах в качестве преподавателей и наставников
Вы можете выбрать любое из заданий, а можете решить их все.
Для передачи решенных заданий необходимо сделать следующее:
  • выложить код на github
  • прислать ссылку на info@cyber-russia.ru с пометкой "тестовое задание"
  • все задания выполнить в версии 2018.4 LTS
*Улучшить код - значит сделать его красивее, элегантнее, производительнее, читабельнее и учесть нюансы программирования под Unity.
Задание 1.
Абстрактная задача.
На каждом вызове Update необходимо 5000 раз прирастить строку как показано в коде.
Необходимо увеличить производительность кода не менее чем в 15 раз.
using System.Diagnostics;
using UnityEngine;
using System.Diagnostics;
using Debug = UnityEngine.Debug;


public class Proba1 : MonoBehaviour
{
   private string s;
   private uint a = 0;

   Stopwatch t = new Stopwatch();

   void Start()
   {
       t.Start();
   }

   void Update()
   {
       a = a + 1;

       if (a >= 100)
       {
           Debug.Log( t.ElapsedMilliseconds.ToString() );

           t.Restart();
           a = 0;
       }


       s = "";

       uint p1 = a;
       uint p2 = a + 5000;
      
       for (uint i = p1; i < p2; i++)
       {
           s = s + i.ToString();
       }
   }

   private void OnGUI()
   {
       string v = "Overall length = " + s.Length.ToString();
      
       GUI.Label(new Rect(20, 20, 200, 50), v );
   }
}
Задание 2.
Есть скрипт из игры-платформера, который двигает главную камеру в одной плоскости вслед за игроком.
Улучшите код.
void Update () {
    GameObject c = GameObject.FindGameObjectWithTag("targetCube");

    float y = Mathf.Lerp( Camera.main.transform.position.y, c.transform.position.y+2, 0.03f);
    float z = Mathf.Lerp(Camera.main.transform.position.z, c.transform.position.z, 0.07f);

    Camera.main.transform.position = new Vector3(Camera.main.transform.position.x, y, z);   
}
Задание 3.
Есть скрипт из игры, который заставляет взорваться сторонний объект при столкновении с игроком путем вызова метода BlowUp().
Улучшите код.
private void OnTriggerEnter(Collider other)
{
   Transform t = other.GetComponent<Transform>();
   t.SendMessage("BlowUp", SendMessageOptions.DontRequireReceiver);
}
Задание 4.
Описание: Разработать конструктор ввода текста. В поле должны формироваться выражения из предложенных. За основу можно взять набор текста из любого произведения и разбить на предложения.

Дополнительное задание*:

Представить блоки текста как карточки. Реализовать перетаскивание карточек на поле. После перетаскивание карточки с предложением, вставить необходимый блок кода.

Требования к задаче:

  • Не использовать дополнительные плагины
  • Использовать Unity Canvas
  • В тексте возможно удаления выделенного блока текста.
Задание 5.
Описание: Разработать плагин для ViewPort'a позволяющий создавать уровень из кубиков (размером . Каждый куб можно перемещать и вращать по трём осям при помощи интерфейсов плагина.

Требования к задаче:

  • Использовать библиотеку UnityEditor.
  • Куб является префабом с нанесенной текстурой. Текстура куба позволяет понять его ориентацию.
  • Сохранение/подгрузка собранного уровня
  • Не использовать сторонние библиотеки