Привет, Хабралюди!
Я только недавно начал изучать Unity3D и вместе с ним C#. По этому топику я начал делать свою первую игру на unity. В том уроке не рассматривалось нанесение текстур (например, чтобы стены были из кирпича, а мячик стеклянным), но я решил сделать своим стенам, дверкам, кнопкам, ящичкам и мячу текстуры. После того, как я запихнул текстуры, сделал материалы и поставил материал компонентом префаба, я столкнулся с серьёзной проблемой: при увеличении параметров scale объекта, текстура растягивалась. За количество тайлов текстурки на объекте отвечает параметр Tiling (X, Y) в материале, а это означало, что мне придётся для каждого размера стены делать новый материал и префаб. Такого я допускать не мог, а потому, собрав в кулак всю свою силу я стал рыться в Script Reference в поисках подсказки. Я её нашёл! Вот! Представляю вам, дорогие юзернеймы, мой первый самостоятельно написанный скрипт AutoTiling.
Вам просто остаётся создать одноимённый скрипт C# и закинуть его как компонент в префаб объекта, который может иметь разные размеры и нажать кнопку «Плэй».
Давайте разберём по-подробнее:
void Start () — этот скрипт будет исполнятся при старте игры, т.е. Вы сразу не увидите изменений.
scaleX и scaleY — переменные, берущие значение с точкой из параметра scale объекта.
Спасибо за внимание! И… Жду Ваших предложений по улучшению сего чуда! Удачи!
Я только недавно начал изучать 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 объекта.
Спасибо за внимание! И… Жду Ваших предложений по улучшению сего чуда! Удачи!