This commit is contained in:
bybohka 2026-07-20 21:15:44 +03:00
commit 36f1e7266d
4 changed files with 10 additions and 92 deletions

View File

@ -1,17 +1,15 @@
# Default ignored files
# Default ignored files
/shelf/
/workspace.xml
# Rider ignored files
/projectSettingsUpdater.xml
/.idea.SummerGame.iml
/contentModel.xml
/modules.xml
/projectSettingsUpdater.xml
# Editor-based HTTP Client requests
/httpRequests/
# Ignored default folder with query files
/queries/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml
# Editor-based HTTP Client requests
/httpRequests/

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding" addBOMForNewFiles="with BOM under Windows, with no BOM otherwise" />
</project>

View File

@ -1,82 +0,0 @@
using UnityEngine;
using UnityEngine.UI; // Обязательно для работы со Slider
public class TextureAtlasSliderController : MonoBehaviour
{
[Header("Ссылки на объекты")]
[SerializeField] private Renderer targetRenderer; // Модель, на которой меняем текстуру
[SerializeField] private Slider sliderX; // Слайдер для смещения по оси X
[SerializeField] private Slider sliderY; // Слайдер для смещения по оси Y
[Header("Масштаб текстуры (Tiling)")]
[SerializeField] private Vector2 tiling = new Vector2(0.5f, 0.5f); // Например, 0.5 для сетки 2х2
private Material targetMaterial;
void Start()
{
// Если рендерер не назначен вручную, пытаемся найти его на этом же объекте
if (targetRenderer == null)
{
targetRenderer = GetComponent<Renderer>();
}
if (targetRenderer != null)
{
// Кешируем материал, чтобы не создавать копии в памяти каждый кадр
targetMaterial = targetRenderer.material;
// Устанавливаем начальный масштаб (Tiling)
targetMaterial.mainTextureScale = tiling;
}
// Настраиваем слайдер X
if (sliderX != null)
{
sliderX.minValue = 0f;
sliderX.maxValue = 1f;
// Подписываемся на событие изменения значения слайдера
sliderX.onValueChanged.AddListener(OnOffsetXChanged);
// Устанавливаем начальное положение слайдера под текущее смещение материала
sliderX.value = targetMaterial != null ? targetMaterial.mainTextureOffset.x : 0f;
}
// Настраиваем слайдер Y
if (sliderY != null)
{
sliderY.minValue = 0f;
sliderY.maxValue = 1f;
sliderY.onValueChanged.AddListener(OnOffsetYChanged);
sliderY.value = targetMaterial != null ? targetMaterial.mainTextureOffset.y : 0f;
}
}
// Метод вызывается автоматически при движении слайдера X
private void OnOffsetXChanged(float value)
{
if (targetMaterial != null)
{
Vector2 currentOffset = targetMaterial.mainTextureOffset;
currentOffset.x = value;
targetMaterial.mainTextureOffset = currentOffset;
}
}
// Метод вызывается автоматически при движении слайдера Y
private void OnOffsetYChanged(float value)
{
if (targetMaterial != null)
{
Vector2 currentOffset = targetMaterial.mainTextureOffset;
currentOffset.y = value;
targetMaterial.mainTextureOffset = currentOffset;
}
}
private void OnDestroy()
{
// Отписываемся от событий при уничтожении объекта во избежание утечек памяти
if (sliderX != null) sliderX.onValueChanged.RemoveListener(OnOffsetXChanged);
if (sliderY != null) sliderY.onValueChanged.RemoveListener(OnOffsetYChanged);
}
}

View File

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: 5d2cf3004b777404084244b8470fc294