Как стать автором
Обновить

Авто тайлинг для текстур unity3d

Привет, Хабралюди!

Я только недавно начал изучать Unity3D и вместе с ним C#. По этому топику я начал делать свою первую игру на unity. В том уроке не рассматривалось нанесение текстур (например, чтобы стены были из кирпича, а мячик стеклянным), но я решил сделать своим стенам, дверкам, кнопкам, ящичкам и мячу текстуры. После того, как я запихнул текстуры, сделал материалы и поставил материал компонентом префаба, я столкнулся с серьёзной проблемой: при увеличении параметров scale объекта, текстура растягивалась. За количество тайлов текстурки на объекте отвечает параметр Tiling (X, Y) в материале, а это означало, что мне придётся для каждого размера стены делать новый материал и префаб. Такого я допускать не мог, а потому, собрав в кулак всю свою силу я стал рыться в Script Reference в поисках подсказки. Я её нашёл! Вот! Представляю вам, дорогие юзернеймы, мой первый самостоятельно написанный скрипт AutoTiling.



<code>
using UnityEngine;

public class AutoTiling : MonoBehaviour
{
	void Start ()
	{
        float scaleX = transform.localScale.x;
        float scaleY = transform.localScale.y;
        renderer.material.SetTextureScale("_MainTex", new Vector2(scaleX, scaleY));
	}
}
</code>

Вам просто остаётся создать одноимённый скрипт C# и закинуть его как компонент в префаб объекта, который может иметь разные размеры и нажать кнопку «Плэй».

Давайте разберём по-подробнее:
void Start () — этот скрипт будет исполнятся при старте игры, т.е. Вы сразу не увидите изменений.
scaleX и scaleY — переменные, берущие значение с точкой из параметра scale объекта.

Спасибо за внимание! И… Жду Ваших предложений по улучшению сего чуда! Удачи!
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.